From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- public/sdk/bin/alpha/ddhelp.pdb | Bin 0 -> 254976 bytes public/sdk/bin/hc.bat | 4 + public/sdk/bin/hc31.err | 237 + public/sdk/bin/ole2view.hlp | Bin 0 -> 120905 bytes public/sdk/bin/oletools.hlp | Bin 0 -> 18959 bytes public/sdk/bin/shed.hlp | Bin 0 -> 85476 bytes public/sdk/bin/win32api.dat | 161 + public/sdk/inc/386align.tab | 12 + public/sdk/inc/accctrl.h | 663 ++ public/sdk/inc/aclapi.h | 519 ++ public/sdk/inc/advsn2.h | 22 + public/sdk/inc/advsnk.h | 22 + public/sdk/inc/alertapi.h | 214 + public/sdk/inc/align.hxx | 293 + public/sdk/inc/allerror.h | 1640 +++++ public/sdk/inc/alphalgn.tab | 13 + public/sdk/inc/alphaops.h | 1237 ++++ public/sdk/inc/alphxcpt.tab | 2 + public/sdk/inc/asn1code.h | 265 + public/sdk/inc/asn1hdr.h | 151 + public/sdk/inc/asn1util.h | 181 + public/sdk/inc/assert.hxx | 31 + public/sdk/inc/atalkwsh.h | 197 + public/sdk/inc/basetyps.h | 240 + public/sdk/inc/bndctx.h | 22 + public/sdk/inc/bootetfs.h | 133 + public/sdk/inc/bootfat.h | 37 + public/sdk/inc/boothpfs.h | 517 ++ public/sdk/inc/bootmbr.h | 37 + public/sdk/inc/bootntfs.h | 517 ++ public/sdk/inc/bootofs.h | 261 + public/sdk/inc/caiseapi.h | 386 ++ public/sdk/inc/callconv.inc | 303 + public/sdk/inc/catstg.h | 1349 ++++ public/sdk/inc/cderr.h | 58 + public/sdk/inc/cdlink.hxx | 131 + public/sdk/inc/cfg.h | 98 + public/sdk/inc/cfgmgr32.h | 2385 +++++++ public/sdk/inc/cguid.h | 120 + public/sdk/inc/chicago/ipropidl.h | 57 + public/sdk/inc/chicago/ipropidl.idl | 20 + public/sdk/inc/chicago/oaidl.h | 5942 +++++++++++++++++ public/sdk/inc/chicago/oaidl.idl | 1751 +++++ public/sdk/inc/chicago/objidl.h | 10770 +++++++++++++++++++++++++++++++ public/sdk/inc/chicago/objidl.idl | 2876 +++++++++ public/sdk/inc/chicago/ocidl.idl | 1571 +++++ public/sdk/inc/chicago/oleidl.h | 5044 +++++++++++++++ public/sdk/inc/chicago/oleidl.idl | 1255 ++++ public/sdk/inc/chicago/srvhdl.h | 983 +++ public/sdk/inc/chicago/srvhdl.idl | 347 + public/sdk/inc/chicago/storext.h | 476 ++ public/sdk/inc/chicago/storext.idl | 108 + public/sdk/inc/chicago/unknwn.h | 341 + public/sdk/inc/chicago/unknwn.idl | 75 + public/sdk/inc/chicago/wtypes.h | 1287 ++++ public/sdk/inc/chicago/wtypes.idl | 1339 ++++ public/sdk/inc/ciscan.h | 53 + public/sdk/inc/cisvc.hxx | 211 + public/sdk/inc/classf.h | 22 + public/sdk/inc/cluster.h | 199 + public/sdk/inc/cobjps.h | 69 + public/sdk/inc/coguid.h | 65 + public/sdk/inc/color.dlg | 91 + public/sdk/inc/colordlg.h | 60 + public/sdk/inc/commctrl.h | 4075 ++++++++++++ public/sdk/inc/commdlg.h | 717 ++ public/sdk/inc/common.ver | 111 + public/sdk/inc/compobj.h | 15 + public/sdk/inc/cpl.h | 211 + public/sdk/inc/crash.h | 217 + public/sdk/inc/crt/assert.h | 86 + public/sdk/inc/crt/conio.h | 148 + public/sdk/inc/crt/crtdbg.h | 525 ++ public/sdk/inc/crt/ctype.h | 349 + public/sdk/inc/crt/direct.h | 177 + public/sdk/inc/crt/dos.h | 205 + public/sdk/inc/crt/eh.h | 94 + public/sdk/inc/crt/errno.h | 138 + public/sdk/inc/crt/excpt.h | 181 + public/sdk/inc/crt/fcntl.h | 82 + public/sdk/inc/crt/float.h | 362 ++ public/sdk/inc/crt/fpieee.h | 286 + public/sdk/inc/crt/fstream.h | 173 + public/sdk/inc/crt/io.h | 306 + public/sdk/inc/crt/iomanip.h | 150 + public/sdk/inc/crt/ios.h | 311 + public/sdk/inc/crt/iostream.h | 104 + public/sdk/inc/crt/istream.h | 191 + public/sdk/inc/crt/limits.h | 118 + public/sdk/inc/crt/locale.h | 174 + public/sdk/inc/crt/malloc.h | 198 + public/sdk/inc/crt/math.h | 429 ++ public/sdk/inc/crt/mbctype.h | 191 + public/sdk/inc/crt/mbstring.h | 229 + public/sdk/inc/crt/memory.h | 118 + public/sdk/inc/crt/new.h | 125 + public/sdk/inc/crt/ostream.h | 161 + public/sdk/inc/crt/process.h | 310 + public/sdk/inc/crt/search.h | 116 + public/sdk/inc/crt/setjmp.h | 356 + public/sdk/inc/crt/setjmpex.h | 47 + public/sdk/inc/crt/share.h | 38 + public/sdk/inc/crt/signal.h | 130 + public/sdk/inc/crt/stdarg.h | 163 + public/sdk/inc/crt/stddef.h | 133 + public/sdk/inc/crt/stdexcpt.h | 90 + public/sdk/inc/crt/stdio.h | 528 ++ public/sdk/inc/crt/stdiostr.h | 94 + public/sdk/inc/crt/stdlib.h | 600 ++ public/sdk/inc/crt/streamb.h | 194 + public/sdk/inc/crt/string.h | 292 + public/sdk/inc/crt/strstrea.h | 128 + public/sdk/inc/crt/sys/locking.h | 49 + public/sdk/inc/crt/sys/stat.h | 226 + public/sdk/inc/crt/sys/timeb.h | 151 + public/sdk/inc/crt/sys/types.h | 87 + public/sdk/inc/crt/sys/utime.h | 151 + public/sdk/inc/crt/tchar.h | 995 +++ public/sdk/inc/crt/time.h | 326 + public/sdk/inc/crt/typeinfo.h | 88 + public/sdk/inc/crt/varargs.h | 163 + public/sdk/inc/crt/wchar.h | 699 ++ public/sdk/inc/crt/wcstr.h | 32 + public/sdk/inc/ctl3d.h | 95 + public/sdk/inc/custcntl.h | 208 + public/sdk/inc/dadvhr.h | 22 + public/sdk/inc/datobj.h | 22 + public/sdk/inc/dbcmdtre.hxx | 3771 +++++++++++ public/sdk/inc/dbgpoint.hxx | 358 + public/sdk/inc/dbt.h | 356 + public/sdk/inc/dciddi.h | 283 + public/sdk/inc/dciman.h | 151 + public/sdk/inc/dde.h | 167 + public/sdk/inc/ddeml.h | 497 ++ public/sdk/inc/ddraw.h | 3105 +++++++++ public/sdk/inc/debnot.h | 349 + public/sdk/inc/devguid.h | 50 + public/sdk/inc/devioctl.h | 120 + public/sdk/inc/dfsapi.h | 870 +++ public/sdk/inc/dhcpcext.h | 77 + public/sdk/inc/diamondc.h | 583 ++ public/sdk/inc/diamondd.h | 1110 ++++ public/sdk/inc/digitalv.h | 1089 ++++ public/sdk/inc/disasm.h | 50 + public/sdk/inc/dispatch.h | 15 + public/sdk/inc/dlcapi.h | 908 +++ public/sdk/inc/dlgs.h | 252 + public/sdk/inc/dlink.hxx | 349 + public/sdk/inc/dllsem.hxx | 214 + public/sdk/inc/dplay.h | 309 + public/sdk/inc/drivinit.h | 11 + public/sdk/inc/drpsrc.h | 22 + public/sdk/inc/drptgt.h | 22 + public/sdk/inc/dsapi.h | 403 ++ public/sdk/inc/dsound.h | 366 ++ public/sdk/inc/dsstate.h | 27 + public/sdk/inc/dvobj.h | 15 + public/sdk/inc/efrmte.h | 22 + public/sdk/inc/emonkr.h | 22 + public/sdk/inc/eoverb.h | 22 + public/sdk/inc/estatd.h | 22 + public/sdk/inc/estats.h | 22 + public/sdk/inc/estrng.h | 22 + public/sdk/inc/etype.h | 91 + public/sdk/inc/eunk.h | 22 + public/sdk/inc/except.hxx | 1134 ++++ public/sdk/inc/exchext.h | 788 +++ public/sdk/inc/exchextx.h | 49 + public/sdk/inc/ext.h | 599 ++ public/sdk/inc/extcon.h | 22 + public/sdk/inc/fasttest.inc | 314 + public/sdk/inc/fileopen.dlg | 149 + public/sdk/inc/filter.h | 346 + public/sdk/inc/filterr.h | 168 + public/sdk/inc/findtext.dlg | 68 + public/sdk/inc/font.dlg | 69 + public/sdk/inc/fstream.hxx | 87 + public/sdk/inc/ftestkey.mst | 1363 ++++ public/sdk/inc/ftestlog.mst | 1828 ++++++ public/sdk/inc/ftestutl.mst | 1214 ++++ public/sdk/inc/ftsiface.h | 167 + public/sdk/inc/getuser.h | 129 + public/sdk/inc/gl/gl.h | 1506 +++++ public/sdk/inc/gl/glaux.h | 373 ++ public/sdk/inc/gl/glu.h | 584 ++ public/sdk/inc/gluon.h | 166 + public/sdk/inc/grpcpy.hxx | 22 + public/sdk/inc/httpext.h | 222 + public/sdk/inc/httpfilt.h | 471 ++ public/sdk/inc/icmpapi.h | 152 + public/sdk/inc/icntnr.h | 22 + public/sdk/inc/ilink.hxx | 53 + public/sdk/inc/ilinkp.hxx | 424 ++ public/sdk/inc/imagehlp.h | 922 +++ public/sdk/inc/imaloc.h | 22 + public/sdk/inc/ime.h | 288 + public/sdk/inc/imessage.h | 194 + public/sdk/inc/imm.h | 588 ++ public/sdk/inc/infstr.h | 243 + public/sdk/inc/initguid.h | 38 + public/sdk/inc/inplca.h | 22 + public/sdk/inc/inplcf.h | 22 + public/sdk/inc/inplco.h | 22 + public/sdk/inc/inplcs.h | 22 + public/sdk/inc/inplcu.h | 22 + public/sdk/inc/iofs.h | 1246 ++++ public/sdk/inc/ipexport.h | 140 + public/sdk/inc/ipropidl.h | 57 + public/sdk/inc/ipropidl.idl | 20 + public/sdk/inc/issper16.h | 336 + public/sdk/inc/issperr.dbg | 37 + public/sdk/inc/issperr.h | 319 + public/sdk/inc/isvbop.h | 134 + public/sdk/inc/isvbop.inc | 21 + public/sdk/inc/kerbcon.h | 113 + public/sdk/inc/kerberos.h | 64 + public/sdk/inc/ks386.inc | 1097 ++++ public/sdk/inc/ksalpha.h | 1267 ++++ public/sdk/inc/ksmips.h | 1258 ++++ public/sdk/inc/ksppc.h | 1216 ++++ public/sdk/inc/kxalpha.h | 1915 ++++++ public/sdk/inc/kxmips.h | 517 ++ public/sdk/inc/kxppc.h | 1733 +++++ public/sdk/inc/linkinfo.h | 235 + public/sdk/inc/lm.h | 43 + public/sdk/inc/lmaccess.h | 1400 ++++ public/sdk/inc/lmalert.h | 155 + public/sdk/inc/lmapibuf.h | 74 + public/sdk/inc/lmat.h | 137 + public/sdk/inc/lmaudit.h | 398 ++ public/sdk/inc/lmbrowsr.h | 217 + public/sdk/inc/lmchdev.h | 270 + public/sdk/inc/lmconfig.h | 90 + public/sdk/inc/lmcons.h | 242 + public/sdk/inc/lmdfs.h | 250 + public/sdk/inc/lmerr.h | 582 ++ public/sdk/inc/lmerrlog.h | 1258 ++++ public/sdk/inc/lmmsg.h | 106 + public/sdk/inc/lmremutl.h | 128 + public/sdk/inc/lmrepl.h | 275 + public/sdk/inc/lmrpl.h | 541 ++ public/sdk/inc/lmserver.h | 1230 ++++ public/sdk/inc/lmshare.h | 443 ++ public/sdk/inc/lmsname.h | 103 + public/sdk/inc/lmstats.h | 184 + public/sdk/inc/lmsvc.h | 532 ++ public/sdk/inc/lmuse.h | 164 + public/sdk/inc/lmuseflg.h | 38 + public/sdk/inc/lmwksta.h | 539 ++ public/sdk/inc/lnkobjid.hxx | 79 + public/sdk/inc/loadperf.h | 70 + public/sdk/inc/lockb.h | 22 + public/sdk/inc/lrpcmon.h | 19 + public/sdk/inc/lzexpand.h | 127 + public/sdk/inc/mac386.inc | 267 + public/sdk/inc/macfile.h | 911 +++ public/sdk/inc/makefil1 | 62 + public/sdk/inc/mapi.h | 359 ++ public/sdk/inc/mapicode.h | 245 + public/sdk/inc/mapidbg.h | 479 ++ public/sdk/inc/mapidefs.h | 2649 ++++++++ public/sdk/inc/mapiform.h | 627 ++ public/sdk/inc/mapiguid.h | 336 + public/sdk/inc/mapinls.h | 209 + public/sdk/inc/mapispi.h | 927 +++ public/sdk/inc/mapitags.h | 1033 +++ public/sdk/inc/mapiutil.h | 882 +++ public/sdk/inc/mapival.h | 1786 +++++ public/sdk/inc/mapiwin.h | 431 ++ public/sdk/inc/mapiwz.h | 68 + public/sdk/inc/mapix.h | 541 ++ public/sdk/inc/marshl.h | 22 + public/sdk/inc/mciavi.h | 81 + public/sdk/inc/mcx.h | 102 + public/sdk/inc/memdeser.hxx | 81 + public/sdk/inc/memser.hxx | 79 + public/sdk/inc/mfc30/afx.h | 1533 +++++ public/sdk/inc/mfc30/afx.inl | 368 ++ public/sdk/inc/mfc30/afxaete.r | 92 + public/sdk/inc/mfc30/afxcmn.h | 709 ++ public/sdk/inc/mfc30/afxcmn.inl | 524 ++ public/sdk/inc/mfc30/afxcoll.h | 1370 ++++ public/sdk/inc/mfc30/afxcoll.inl | 468 ++ public/sdk/inc/mfc30/afxdb.h | 817 +++ public/sdk/inc/mfc30/afxdb.inl | 92 + public/sdk/inc/mfc30/afxdb.rc | 83 + public/sdk/inc/mfc30/afxdd_.h | 57 + public/sdk/inc/mfc30/afxdisp.h | 590 ++ public/sdk/inc/mfc30/afxdlgs.h | 604 ++ public/sdk/inc/mfc30/afxdlgs.inl | 110 + public/sdk/inc/mfc30/afxdll_.h | 90 + public/sdk/inc/mfc30/afxdllx.h | 20 + public/sdk/inc/mfc30/afxext.h | 992 +++ public/sdk/inc/mfc30/afxext.inl | 107 + public/sdk/inc/mfc30/afxhelp.hm | 226 + public/sdk/inc/mfc30/afxmsg_.h | 568 ++ public/sdk/inc/mfc30/afxodlgs.h | 375 ++ public/sdk/inc/mfc30/afxole.h | 1630 +++++ public/sdk/inc/mfc30/afxole.inl | 190 + public/sdk/inc/mfc30/afxolecl.rc | 60 + public/sdk/inc/mfc30/afxolesv.rc | 53 + public/sdk/inc/mfc30/afxplex_.h | 48 + public/sdk/inc/mfc30/afxprint.rc | 130 + public/sdk/inc/mfc30/afxpriv.h | 680 ++ public/sdk/inc/mfc30/afxres.aps | Bin 0 -> 22616 bytes public/sdk/inc/mfc30/afxres.h | 691 ++ public/sdk/inc/mfc30/afxres.rc | 177 + public/sdk/inc/mfc30/afxsock.h | 350 + public/sdk/inc/mfc30/afxsock.inl | 51 + public/sdk/inc/mfc30/afxstat_.h | 537 ++ public/sdk/inc/mfc30/afxtempl.h | 1501 +++++ public/sdk/inc/mfc30/afxv_cfg.h | 7 + public/sdk/inc/mfc30/afxv_cpu.h | 65 + public/sdk/inc/mfc30/afxv_dll.h | 53 + public/sdk/inc/mfc30/afxv_mac.h | 57 + public/sdk/inc/mfc30/afxv_w32.h | 201 + public/sdk/inc/mfc30/afxver_.h | 324 + public/sdk/inc/mfc30/afxwin.h | 3755 +++++++++++ public/sdk/inc/mfc30/afxwin1.inl | 931 +++ public/sdk/inc/mfc30/afxwin2.inl | 899 +++ public/sdk/inc/mfc30/commctrl.h | 2634 ++++++++ public/sdk/inc/mfc30/l.deu/afxdb.rc | 83 + public/sdk/inc/mfc30/l.deu/afxolecl.rc | 60 + public/sdk/inc/mfc30/l.deu/afxolesv.rc | 53 + public/sdk/inc/mfc30/l.deu/afxprint.rc | 130 + public/sdk/inc/mfc30/l.deu/afxres.aps | Bin 0 -> 23779 bytes public/sdk/inc/mfc30/l.deu/afxres.rc | 177 + public/sdk/inc/mfc30/l.fra/afxdb.rc | 83 + public/sdk/inc/mfc30/l.fra/afxolecl.rc | 60 + public/sdk/inc/mfc30/l.fra/afxolesv.rc | 53 + public/sdk/inc/mfc30/l.fra/afxprint.rc | 130 + public/sdk/inc/mfc30/l.fra/afxres.rc | 177 + public/sdk/inc/mfc30/l.jpn/afxdb.rc | 83 + public/sdk/inc/mfc30/l.jpn/afxolecl.rc | 60 + public/sdk/inc/mfc30/l.jpn/afxolesv.rc | 53 + public/sdk/inc/mfc30/l.jpn/afxprint.rc | 130 + public/sdk/inc/mfc30/l.jpn/afxres.aps | Bin 0 -> 23460 bytes public/sdk/inc/mfc30/l.jpn/afxres.rc | 177 + public/sdk/inc/mfc30/mapi.h | 175 + public/sdk/inc/mfc30/ole2ansi.h | 86 + public/sdk/inc/mfc30/ole2ui.h | 1622 +++++ public/sdk/inc/mfc30/oledlgs.h | 162 + public/sdk/inc/mfc30/res/copy4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/help.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/help.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc30/res/magnify.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/magnify.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc30/res/minifwnd.bmp | Bin 0 -> 198 bytes public/sdk/inc/mfc30/res/move4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/nodrop.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/psscr.bmp | Bin 0 -> 390 bytes public/sdk/inc/mfc30/res/psscr_l.bmp | Bin 0 -> 390 bytes public/sdk/inc/mfc30/res/psscr_ld.bmp | Bin 0 -> 390 bytes public/sdk/inc/mfc30/res/psscr_r.bmp | Bin 0 -> 390 bytes public/sdk/inc/mfc30/res/psscr_rd.bmp | Bin 0 -> 390 bytes public/sdk/inc/mfc30/res/psscroll.bmp | Bin 0 -> 1412 bytes public/sdk/inc/mfc30/res/sarrows.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/split.rsc | Bin 0 -> 546 bytes public/sdk/inc/mfc30/res/splith.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/splitv.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/trck4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc30/res/trcknesw.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc30/res/trckns.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc30/res/trcknwse.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc30/res/trckwe.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc30/winres.h | 305 + public/sdk/inc/mfc40/afx.h | 1818 ++++++ public/sdk/inc/mfc40/afx.inl | 395 ++ public/sdk/inc/mfc40/afxadv.h | 181 + public/sdk/inc/mfc40/afxaete.r | 92 + public/sdk/inc/mfc40/afxcmn.h | 1036 +++ public/sdk/inc/mfc40/afxcmn.inl | 647 ++ public/sdk/inc/mfc40/afxcoll.h | 1440 +++++ public/sdk/inc/mfc40/afxcoll.inl | 496 ++ public/sdk/inc/mfc40/afxctl.h | 1410 ++++ public/sdk/inc/mfc40/afxctl.inl | 79 + public/sdk/inc/mfc40/afxctl.rc | 272 + public/sdk/inc/mfc40/afxcview.h | 135 + public/sdk/inc/mfc40/afxcview.inl | 29 + public/sdk/inc/mfc40/afxdao.h | 1318 ++++ public/sdk/inc/mfc40/afxdao.inl | 75 + public/sdk/inc/mfc40/afxdb.h | 838 +++ public/sdk/inc/mfc40/afxdb.inl | 99 + public/sdk/inc/mfc40/afxdb.rc | 97 + public/sdk/inc/mfc40/afxdb_.h | 69 + public/sdk/inc/mfc40/afxdd_.h | 63 + public/sdk/inc/mfc40/afxdisp.h | 1297 ++++ public/sdk/inc/mfc40/afxdlgs.h | 643 ++ public/sdk/inc/mfc40/afxdlgs.inl | 100 + public/sdk/inc/mfc40/afxdll_.h | 105 + public/sdk/inc/mfc40/afxdllx.h | 68 + public/sdk/inc/mfc40/afxext.h | 1038 +++ public/sdk/inc/mfc40/afxext.inl | 121 + public/sdk/inc/mfc40/afxhelp.hm | 272 + public/sdk/inc/mfc40/afxisapi.h | 553 ++ public/sdk/inc/mfc40/afxisapi.inl | 122 + public/sdk/inc/mfc40/afxisapi.rc | 44 + public/sdk/inc/mfc40/afxmsg_.h | 683 ++ public/sdk/inc/mfc40/afxmt.h | 255 + public/sdk/inc/mfc40/afxmt.inl | 50 + public/sdk/inc/mfc40/afxodlgs.h | 502 ++ public/sdk/inc/mfc40/afxole.h | 1666 +++++ public/sdk/inc/mfc40/afxole.inl | 373 ++ public/sdk/inc/mfc40/afxolecl.rc | 66 + public/sdk/inc/mfc40/afxolesv.rc | 53 + public/sdk/inc/mfc40/afxplex_.h | 49 + public/sdk/inc/mfc40/afxprint.rc | 130 + public/sdk/inc/mfc40/afxpriv.h | 979 +++ public/sdk/inc/mfc40/afxres.h | 767 +++ public/sdk/inc/mfc40/afxres.rc | 211 + public/sdk/inc/mfc40/afxrich.h | 471 ++ public/sdk/inc/mfc40/afxrich.inl | 56 + public/sdk/inc/mfc40/afxsock.h | 355 + public/sdk/inc/mfc40/afxsock.inl | 53 + public/sdk/inc/mfc40/afxstat_.h | 321 + public/sdk/inc/mfc40/afxtempl.h | 1596 +++++ public/sdk/inc/mfc40/afxtls_.h | 241 + public/sdk/inc/mfc40/afxv_cfg.h | 17 + public/sdk/inc/mfc40/afxv_cpu.h | 63 + public/sdk/inc/mfc40/afxv_dll.h | 53 + public/sdk/inc/mfc40/afxv_mac.h | 51 + public/sdk/inc/mfc40/afxv_w32.h | 208 + public/sdk/inc/mfc40/afxver_.h | 326 + public/sdk/inc/mfc40/afxwin.h | 4498 +++++++++++++ public/sdk/inc/mfc40/afxwin1.inl | 1091 ++++ public/sdk/inc/mfc40/afxwin2.inl | 1041 +++ public/sdk/inc/mfc40/daogetrw.h | 143 + public/sdk/inc/mfc40/dbdaoerr.h | 448 ++ public/sdk/inc/mfc40/dbdaoid.h | 131 + public/sdk/inc/mfc40/dbdaoint.h | 776 +++ public/sdk/inc/mfc40/l.chs/afxctl.rc | 272 + public/sdk/inc/mfc40/l.chs/afxdb.rc | 97 + public/sdk/inc/mfc40/l.chs/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.chs/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.chs/afxprint.rc | 130 + public/sdk/inc/mfc40/l.chs/afxres.rc | 211 + public/sdk/inc/mfc40/l.deu/afxctl.rc | 272 + public/sdk/inc/mfc40/l.deu/afxdb.rc | 97 + public/sdk/inc/mfc40/l.deu/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.deu/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.deu/afxprint.rc | 130 + public/sdk/inc/mfc40/l.deu/afxres.rc | 211 + public/sdk/inc/mfc40/l.esp/afxctl.rc | 272 + public/sdk/inc/mfc40/l.esp/afxdb.rc | 97 + public/sdk/inc/mfc40/l.esp/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.esp/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.esp/afxprint.rc | 130 + public/sdk/inc/mfc40/l.esp/afxres.rc | 211 + public/sdk/inc/mfc40/l.fra/afxctl.rc | 272 + public/sdk/inc/mfc40/l.fra/afxdb.rc | 97 + public/sdk/inc/mfc40/l.fra/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.fra/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.fra/afxprint.rc | 130 + public/sdk/inc/mfc40/l.fra/afxres.rc | 211 + public/sdk/inc/mfc40/l.ita/afxctl.rc | 272 + public/sdk/inc/mfc40/l.ita/afxdb.rc | 97 + public/sdk/inc/mfc40/l.ita/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.ita/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.ita/afxprint.rc | 130 + public/sdk/inc/mfc40/l.ita/afxres.rc | 211 + public/sdk/inc/mfc40/l.jpn/afxctl.rc | 272 + public/sdk/inc/mfc40/l.jpn/afxdb.rc | 97 + public/sdk/inc/mfc40/l.jpn/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.jpn/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.jpn/afxprint.rc | 130 + public/sdk/inc/mfc40/l.jpn/afxres.rc | 211 + public/sdk/inc/mfc40/l.kor/afxctl.rc | 272 + public/sdk/inc/mfc40/l.kor/afxdb.rc | 97 + public/sdk/inc/mfc40/l.kor/afxolecl.rc | 66 + public/sdk/inc/mfc40/l.kor/afxolesv.rc | 53 + public/sdk/inc/mfc40/l.kor/afxprint.rc | 130 + public/sdk/inc/mfc40/l.kor/afxres.rc | 211 + public/sdk/inc/mfc40/mfcsamps.mak | 490 ++ public/sdk/inc/mfc40/res/3dcheck.bmp | Bin 0 -> 1522 bytes public/sdk/inc/mfc40/res/95check.bmp | Bin 0 -> 338 bytes public/sdk/inc/mfc40/res/copy4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/help.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/help.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc40/res/magnify.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/magnify.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc40/res/minifwnd.bmp | Bin 0 -> 198 bytes public/sdk/inc/mfc40/res/move4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/nodrop.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/ntcheck.bmp | Bin 0 -> 378 bytes public/sdk/inc/mfc40/res/sarrows.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/split.rsc | Bin 0 -> 546 bytes public/sdk/inc/mfc40/res/splith.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/splitv.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/trck4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc40/res/trcknesw.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc40/res/trckns.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc40/res/trcknwse.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc40/res/trckwe.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc40/res/truetype.bmp | Bin 0 -> 262 bytes public/sdk/inc/mfc40/sql.h | 1259 ++++ public/sdk/inc/mfc40/sqlext.h | 293 + public/sdk/inc/mfc40/sqltypes.h | 138 + public/sdk/inc/mfc40/winres.h | 589 ++ public/sdk/inc/mfc42/afx.h | 1916 ++++++ public/sdk/inc/mfc42/afx.inl | 415 ++ public/sdk/inc/mfc42/afxadv.h | 181 + public/sdk/inc/mfc42/afxaete.r | 92 + public/sdk/inc/mfc42/afxcmn.h | 919 +++ public/sdk/inc/mfc42/afxcmn.inl | 643 ++ public/sdk/inc/mfc42/afxcoll.h | 1446 +++++ public/sdk/inc/mfc42/afxcoll.inl | 496 ++ public/sdk/inc/mfc42/afxcom_.h | 463 ++ public/sdk/inc/mfc42/afxconv.h | 148 + public/sdk/inc/mfc42/afxctl.h | 1673 +++++ public/sdk/inc/mfc42/afxctl.inl | 117 + public/sdk/inc/mfc42/afxctl.rc | 284 + public/sdk/inc/mfc42/afxcview.h | 135 + public/sdk/inc/mfc42/afxcview.inl | 29 + public/sdk/inc/mfc42/afxdao.h | 1325 ++++ public/sdk/inc/mfc42/afxdao.inl | 77 + public/sdk/inc/mfc42/afxdb.h | 1042 +++ public/sdk/inc/mfc42/afxdb.inl | 113 + public/sdk/inc/mfc42/afxdb.rc | 103 + public/sdk/inc/mfc42/afxdb_.h | 72 + public/sdk/inc/mfc42/afxdd_.h | 64 + public/sdk/inc/mfc42/afxdisp.h | 1413 ++++ public/sdk/inc/mfc42/afxdlgs.h | 650 ++ public/sdk/inc/mfc42/afxdlgs.inl | 100 + public/sdk/inc/mfc42/afxdll_.h | 105 + public/sdk/inc/mfc42/afxdllx.h | 68 + public/sdk/inc/mfc42/afxdocob.h | 391 ++ public/sdk/inc/mfc42/afxext.h | 1048 +++ public/sdk/inc/mfc42/afxext.inl | 121 + public/sdk/inc/mfc42/afxhelp.hm | 272 + public/sdk/inc/mfc42/afxinet.h | 671 ++ public/sdk/inc/mfc42/afxinet.inl | 69 + public/sdk/inc/mfc42/afxisapi.h | 561 ++ public/sdk/inc/mfc42/afxisapi.inl | 121 + public/sdk/inc/mfc42/afxisapi.rc | 45 + public/sdk/inc/mfc42/afxmsg_.h | 695 ++ public/sdk/inc/mfc42/afxmt.h | 255 + public/sdk/inc/mfc42/afxmt.inl | 50 + public/sdk/inc/mfc42/afxodlgs.h | 502 ++ public/sdk/inc/mfc42/afxole.h | 1907 ++++++ public/sdk/inc/mfc42/afxole.inl | 408 ++ public/sdk/inc/mfc42/afxolecl.rc | 66 + public/sdk/inc/mfc42/afxolesv.rc | 53 + public/sdk/inc/mfc42/afxplex_.h | 53 + public/sdk/inc/mfc42/afxprint.rc | 130 + public/sdk/inc/mfc42/afxpriv.h | 789 +++ public/sdk/inc/mfc42/afxpriv2.h | 225 + public/sdk/inc/mfc42/afxres.h | 772 +++ public/sdk/inc/mfc42/afxres.rc | 223 + public/sdk/inc/mfc42/afxrich.h | 399 ++ public/sdk/inc/mfc42/afxrich.inl | 56 + public/sdk/inc/mfc42/afxsock.h | 365 ++ public/sdk/inc/mfc42/afxsock.inl | 53 + public/sdk/inc/mfc42/afxstat_.h | 363 ++ public/sdk/inc/mfc42/afxtempl.h | 1648 +++++ public/sdk/inc/mfc42/afxtls_.h | 240 + public/sdk/inc/mfc42/afxv_cfg.h | 17 + public/sdk/inc/mfc42/afxv_cpu.h | 63 + public/sdk/inc/mfc42/afxv_dll.h | 53 + public/sdk/inc/mfc42/afxv_mac.h | 52 + public/sdk/inc/mfc42/afxv_w32.h | 208 + public/sdk/inc/mfc42/afxver_.h | 327 + public/sdk/inc/mfc42/afxwin.h | 4645 +++++++++++++ public/sdk/inc/mfc42/afxwin1.inl | 1091 ++++ public/sdk/inc/mfc42/afxwin2.inl | 1043 +++ public/sdk/inc/mfc42/daogetrw.h | 143 + public/sdk/inc/mfc42/datapath.h | 601 ++ public/sdk/inc/mfc42/dbdaoerr.h | 448 ++ public/sdk/inc/mfc42/dbdaoid.h | 131 + public/sdk/inc/mfc42/dbdaoint.h | 776 +++ public/sdk/inc/mfc42/docobj.h | 1654 +++++ public/sdk/inc/mfc42/idispids.h | 12 + public/sdk/inc/mfc42/l.chs/afxctl.rc | 284 + public/sdk/inc/mfc42/l.chs/afxdb.rc | 103 + public/sdk/inc/mfc42/l.chs/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.chs/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.chs/afxprint.rc | 130 + public/sdk/inc/mfc42/l.chs/afxres.rc | 223 + public/sdk/inc/mfc42/l.cht/afxctl.rc | 284 + public/sdk/inc/mfc42/l.cht/afxdb.rc | 103 + public/sdk/inc/mfc42/l.cht/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.cht/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.cht/afxprint.rc | 130 + public/sdk/inc/mfc42/l.cht/afxres.rc | 223 + public/sdk/inc/mfc42/l.deu/afxctl.rc | 284 + public/sdk/inc/mfc42/l.deu/afxdb.rc | 103 + public/sdk/inc/mfc42/l.deu/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.deu/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.deu/afxprint.rc | 130 + public/sdk/inc/mfc42/l.deu/afxres.rc | 223 + public/sdk/inc/mfc42/l.esp/afxctl.rc | 284 + public/sdk/inc/mfc42/l.esp/afxdb.rc | 103 + public/sdk/inc/mfc42/l.esp/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.esp/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.esp/afxprint.rc | 130 + public/sdk/inc/mfc42/l.esp/afxres.rc | 223 + public/sdk/inc/mfc42/l.fra/afxctl.rc | 284 + public/sdk/inc/mfc42/l.fra/afxdb.rc | 103 + public/sdk/inc/mfc42/l.fra/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.fra/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.fra/afxprint.rc | 130 + public/sdk/inc/mfc42/l.fra/afxres.rc | 223 + public/sdk/inc/mfc42/l.ita/afxctl.rc | 284 + public/sdk/inc/mfc42/l.ita/afxdb.rc | 103 + public/sdk/inc/mfc42/l.ita/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.ita/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.ita/afxprint.rc | 130 + public/sdk/inc/mfc42/l.ita/afxres.rc | 223 + public/sdk/inc/mfc42/l.jpn/afxctl.rc | 284 + public/sdk/inc/mfc42/l.jpn/afxdb.rc | 103 + public/sdk/inc/mfc42/l.jpn/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.jpn/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.jpn/afxprint.rc | 130 + public/sdk/inc/mfc42/l.jpn/afxres.rc | 223 + public/sdk/inc/mfc42/l.kor/afxctl.rc | 284 + public/sdk/inc/mfc42/l.kor/afxdb.rc | 103 + public/sdk/inc/mfc42/l.kor/afxolecl.rc | 66 + public/sdk/inc/mfc42/l.kor/afxolesv.rc | 53 + public/sdk/inc/mfc42/l.kor/afxprint.rc | 130 + public/sdk/inc/mfc42/l.kor/afxres.rc | 223 + public/sdk/inc/mfc42/mfcsamps.mak | 490 ++ public/sdk/inc/mfc42/mssccprj.scc | 4 + public/sdk/inc/mfc42/res/3dcheck.bmp | Bin 0 -> 1522 bytes public/sdk/inc/mfc42/res/95check.bmp | Bin 0 -> 338 bytes public/sdk/inc/mfc42/res/copy4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/help.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/help.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc42/res/magnify.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/magnify.rsc | Bin 0 -> 378 bytes public/sdk/inc/mfc42/res/minifwnd.bmp | Bin 0 -> 198 bytes public/sdk/inc/mfc42/res/move4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/nodrop.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/ntcheck.bmp | Bin 0 -> 378 bytes public/sdk/inc/mfc42/res/sarrows.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/split.rsc | Bin 0 -> 546 bytes public/sdk/inc/mfc42/res/splith.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/splitv.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/trck4way.cur | Bin 0 -> 518 bytes public/sdk/inc/mfc42/res/trcknesw.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc42/res/trckns.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc42/res/trcknwse.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc42/res/trckwe.cur | Bin 0 -> 722 bytes public/sdk/inc/mfc42/res/truetype.bmp | Bin 0 -> 262 bytes public/sdk/inc/mfc42/servprov.h | 191 + public/sdk/inc/mfc42/sql.h | 1259 ++++ public/sdk/inc/mfc42/sqlext.h | 293 + public/sdk/inc/mfc42/sqltypes.h | 138 + public/sdk/inc/mfc42/winres.h | 597 ++ public/sdk/inc/mgmtapi.h | 131 + public/sdk/inc/midles.h | 218 + public/sdk/inc/minfo.h | 22 + public/sdk/inc/mipsalgn.tab | 13 + public/sdk/inc/mipsinst.h | 324 + public/sdk/inc/mipsxcpt.tab | 2 + public/sdk/inc/mmddk.h | 692 ++ public/sdk/inc/mmreg.h | 1638 +++++ public/sdk/inc/mmsystem.h | 3798 +++++++++++ public/sdk/inc/moniker.h | 15 + public/sdk/inc/monikr.h | 22 + public/sdk/inc/msacm.h | 1963 ++++++ public/sdk/inc/msacmdlg.dlg | 80 + public/sdk/inc/msacmdlg.h | 32 + public/sdk/inc/msacmdrv.h | 320 + public/sdk/inc/msaudite.h | 2418 +++++++ public/sdk/inc/msgflt.h | 22 + public/sdk/inc/msobjs.h | 2580 ++++++++ public/sdk/inc/mspab.h | 69 + public/sdk/inc/mspst.h | 96 + public/sdk/inc/mstest.inc | 1250 ++++ public/sdk/inc/mswsock.h | 181 + public/sdk/inc/nb30.h | 308 + public/sdk/inc/nddeapi.h | 400 ++ public/sdk/inc/nddesec.h | 104 + public/sdk/inc/netevent.dbg | 290 + public/sdk/inc/netevent.h | 2846 ++++++++ public/sdk/inc/newat.h | 103 + public/sdk/inc/nminsert.h | 124 + public/sdk/inc/npapi.h | 605 ++ public/sdk/inc/nspapi.h | 690 ++ public/sdk/inc/nspapip.h | 149 + public/sdk/inc/nt.h | 83 + public/sdk/inc/nt_vdd.h | 215 + public/sdk/inc/ntalpha.h | 888 +++ public/sdk/inc/ntconfig.h | 842 +++ public/sdk/inc/ntcsrdll.h | 193 + public/sdk/inc/ntcsrmsg.h | 141 + public/sdk/inc/ntcsrmsg.inc | 123 + public/sdk/inc/ntcsrsrv.h | 568 ++ public/sdk/inc/ntdbg.h | 1027 +++ public/sdk/inc/ntddaux.h | 73 + public/sdk/inc/ntddbeep.h | 59 + public/sdk/inc/ntddbrow.h | 448 ++ public/sdk/inc/ntddcdrm.h | 284 + public/sdk/inc/ntdddfs.h | 291 + public/sdk/inc/ntdddisk.h | 695 ++ public/sdk/inc/ntdddlc.h | 80 + public/sdk/inc/ntddfs.h | 47 + public/sdk/inc/ntddft.h | 206 + public/sdk/inc/ntddjoy.h | 132 + public/sdk/inc/ntddkbd.h | 290 + public/sdk/inc/ntddmidi.h | 136 + public/sdk/inc/ntddmix.h | 206 + public/sdk/inc/ntddmodm.h | 35 + public/sdk/inc/ntddmou.h | 205 + public/sdk/inc/ntddmup.h | 67 + public/sdk/inc/ntddndis.h | 1542 +++++ public/sdk/inc/ntddnetd.h | 196 + public/sdk/inc/ntddnfs.h | 441 ++ public/sdk/inc/ntddnpfs.h | 47 + public/sdk/inc/ntddnull.h | 47 + public/sdk/inc/ntddpar.h | 63 + public/sdk/inc/ntddpcm.h | 161 + public/sdk/inc/ntddrdr.h | 54 + public/sdk/inc/ntddscsi.h | 229 + public/sdk/inc/ntddser.h | 529 ++ public/sdk/inc/ntddsjoy.h | 367 ++ public/sdk/inc/ntddsnd.h | 41 + public/sdk/inc/ntddstor.h | 96 + public/sdk/inc/ntddstrm.h | 118 + public/sdk/inc/ntddtape.h | 301 + public/sdk/inc/ntddtdi.h | 66 + public/sdk/inc/ntddtime.h | 44 + public/sdk/inc/ntddtx.h | 25 + public/sdk/inc/ntddvdeo.h | 1323 ++++ public/sdk/inc/ntddvdsk.h | 47 + public/sdk/inc/ntddwave.h | 128 + public/sdk/inc/ntdef.h | 1256 ++++ public/sdk/inc/ntdskreg.h | 257 + public/sdk/inc/ntelfapi.h | 295 + public/sdk/inc/ntexapi.h | 1680 +++++ public/sdk/inc/ntfsprop.h | 264 + public/sdk/inc/nti386.h | 495 ++ public/sdk/inc/ntimage.h | 1160 ++++ public/sdk/inc/ntimp.idl | 56 + public/sdk/inc/ntioapi.h | 2002 ++++++ public/sdk/inc/ntiodump.h | 64 + public/sdk/inc/ntiolog.h | 83 + public/sdk/inc/ntkdexts.h | 122 + public/sdk/inc/ntkeapi.h | 136 + public/sdk/inc/ntkxapi.h | 118 + public/sdk/inc/ntldr.h | 302 + public/sdk/inc/ntlmsp.h | 299 + public/sdk/inc/ntlpcapi.h | 277 + public/sdk/inc/ntlsa.h | 2190 +++++++ public/sdk/inc/ntlsapi.h | 194 + public/sdk/inc/ntmips.h | 1177 ++++ public/sdk/inc/ntmmapi.h | 370 ++ public/sdk/inc/ntmsv1_0.h | 413 ++ public/sdk/inc/ntnls.h | 50 + public/sdk/inc/ntobapi.h | 308 + public/sdk/inc/ntpnpapi.h | 239 + public/sdk/inc/ntpoapi.h | 109 + public/sdk/inc/ntppc.h | 688 ++ public/sdk/inc/ntprfctr.h | 130 + public/sdk/inc/ntpsapi.h | 918 +++ public/sdk/inc/ntquery.h | 34 + public/sdk/inc/ntregapi.h | 448 ++ public/sdk/inc/ntrpc.idl | 177 + public/sdk/inc/ntrtl.h | 5272 +++++++++++++++ public/sdk/inc/ntsam.h | 1596 +++++ public/sdk/inc/ntsdexts.h | 88 + public/sdk/inc/ntseapi.h | 1591 +++++ public/sdk/inc/ntsecapi.h | 1148 ++++ public/sdk/inc/ntsm.h | 163 + public/sdk/inc/ntstatus.dbg | 732 +++ public/sdk/inc/ntstatus.h | 7179 ++++++++++++++++++++ public/sdk/inc/nturtl.h | 897 +++ public/sdk/inc/ntverp.h | 68 + public/sdk/inc/ntxcapi.h | 336 + public/sdk/inc/oadvhr.h | 22 + public/sdk/inc/oaidl.h | 5942 +++++++++++++++++ public/sdk/inc/oaidl.idl | 1751 +++++ public/sdk/inc/objbase.h | 863 +++ public/sdk/inc/objerror.h | 10 + public/sdk/inc/objidl.h | 10770 +++++++++++++++++++++++++++++++ public/sdk/inc/objidl.idl | 2876 +++++++++ public/sdk/inc/ocach2.h | 22 + public/sdk/inc/ocachc.h | 22 + public/sdk/inc/ocache.h | 22 + public/sdk/inc/ocidl.h | 7938 +++++++++++++++++++++++ public/sdk/inc/ocidl.idl | 1571 +++++ public/sdk/inc/ocntnr.h | 22 + public/sdk/inc/ocsite.h | 22 + public/sdk/inc/ofsmsg.h | 36 + public/sdk/inc/ofsoid.hxx | 98 + public/sdk/inc/ole.h | 503 ++ public/sdk/inc/ole2.h | 344 + public/sdk/inc/ole2anac.h | 91 + public/sdk/inc/ole2dbg.h | 19 + public/sdk/inc/ole2ver.h | 15 + public/sdk/inc/oleauto.h | 771 +++ public/sdk/inc/olecairo.h | 96 + public/sdk/inc/olectl.h | 568 ++ public/sdk/inc/olectlid.h | 12 + public/sdk/inc/oledb.h | 9520 +++++++++++++++++++++++++++ public/sdk/inc/oledbtyp.h | 21 + public/sdk/inc/oledlg.dlg | 566 ++ public/sdk/inc/oledlg.h | 1625 +++++ public/sdk/inc/oleext.h | 2276 +++++++ public/sdk/inc/oleguid.h | 80 + public/sdk/inc/oleidl.h | 5044 +++++++++++++++ public/sdk/inc/oleidl.idl | 1255 ++++ public/sdk/inc/oleobj.h | 22 + public/sdk/inc/olewnd.h | 22 + public/sdk/inc/olink.h | 22 + public/sdk/inc/ossber.h | 716 ++ public/sdk/inc/ossdll.h | 405 ++ public/sdk/inc/ossglobl.h | 191 + public/sdk/inc/ossmmgmt.h | 96 + public/sdk/inc/ossper.h | 341 + public/sdk/inc/osstrace.h | 378 ++ public/sdk/inc/otrack.hxx | 216 + public/sdk/inc/pcrt32.h | 39 + public/sdk/inc/pdb.h | 318 + public/sdk/inc/pdh.h | 573 ++ public/sdk/inc/pdhmsg.h | 366 ++ public/sdk/inc/pdname.h | 22 + public/sdk/inc/perfsnap.hxx | 587 ++ public/sdk/inc/pfile.h | 22 + public/sdk/inc/plan16.h | 13 + public/sdk/inc/plan32.h | 14 + public/sdk/inc/poppack.h | 36 + public/sdk/inc/port1632.h | 40 + public/sdk/inc/posix/dirent.h | 46 + public/sdk/inc/posix/errno.h | 31 + public/sdk/inc/posix/fcntl.h | 83 + public/sdk/inc/posix/grp.h | 39 + public/sdk/inc/posix/pwd.h | 40 + public/sdk/inc/posix/setjmp.h | 269 + public/sdk/inc/posix/signal.h | 88 + public/sdk/inc/posix/sys/errno.h | 72 + public/sdk/inc/posix/sys/stat.h | 95 + public/sdk/inc/posix/sys/times.h | 43 + public/sdk/inc/posix/sys/types.h | 124 + public/sdk/inc/posix/sys/utsname.h | 37 + public/sdk/inc/posix/sys/wait.h | 90 + public/sdk/inc/posix/tar.h | 52 + public/sdk/inc/posix/termios.h | 178 + public/sdk/inc/posix/types.h | 20 + public/sdk/inc/posix/unistd.h | 168 + public/sdk/inc/posix/utime.h | 34 + public/sdk/inc/ppcalign.tab | 13 + public/sdk/inc/ppcinst.h | 644 ++ public/sdk/inc/ppcxcpt.tab | 2 + public/sdk/inc/prnsetup.dlg | 144 + public/sdk/inc/propapi.h | 356 + public/sdk/inc/propset.h | 105 + public/sdk/inc/propstm.hxx | 678 ++ public/sdk/inc/propvar.h | 227 + public/sdk/inc/provapi.h | 248 + public/sdk/inc/proxyb.h | 22 + public/sdk/inc/prsht.h | 426 ++ public/sdk/inc/prsist.h | 22 + public/sdk/inc/psapi.h | 253 + public/sdk/inc/psfbuf.h | 22 + public/sdk/inc/pshpack1.h | 32 + public/sdk/inc/pshpack2.h | 32 + public/sdk/inc/pshpack4.h | 32 + public/sdk/inc/pshpack8.h | 32 + public/sdk/inc/pstorg.h | 22 + public/sdk/inc/pstrm.h | 22 + public/sdk/inc/ptypes16.h | 70 + public/sdk/inc/ptypes32.h | 62 + public/sdk/inc/pwin16.h | 289 + public/sdk/inc/pwin32.h | 305 + public/sdk/inc/query.h | 1627 +++++ public/sdk/inc/ras.h | 1173 ++++ public/sdk/inc/rasdlg.h | 269 + public/sdk/inc/raserror.h | 629 ++ public/sdk/inc/rassapi.h | 385 ++ public/sdk/inc/rasshost.h | 149 + public/sdk/inc/rchanb.h | 22 + public/sdk/inc/recguids.h | 13 + public/sdk/inc/reconcil.h | 201 + public/sdk/inc/regapix.h | 453 ++ public/sdk/inc/regstr.h | 1237 ++++ public/sdk/inc/replapi.h | 94 + public/sdk/inc/resource.hxx | 211 + public/sdk/inc/restrict.hxx | 1662 +++++ public/sdk/inc/richedit.h | 1028 +++ public/sdk/inc/richole.h | 160 + public/sdk/inc/rot.h | 22 + public/sdk/inc/rpc.h | 126 + public/sdk/inc/rpcdce.h | 1618 +++++ public/sdk/inc/rpcdcep.h | 415 ++ public/sdk/inc/rpcndr.h | 2630 ++++++++ public/sdk/inc/rpcnsi.h | 509 ++ public/sdk/inc/rpcnsip.h | 72 + public/sdk/inc/rpcnterr.h | 33 + public/sdk/inc/rpcproxy.h | 586 ++ public/sdk/inc/rpcwdt.h | 431 ++ public/sdk/inc/rtstg.h | 22 + public/sdk/inc/runobj.h | 22 + public/sdk/inc/safepnt.hxx | 957 +++ public/sdk/inc/scode.h | 18 + public/sdk/inc/scrnsave.h | 192 + public/sdk/inc/secdes.hxx | 43 + public/sdk/inc/secext.h | 140 + public/sdk/inc/secobjs.h | 45 + public/sdk/inc/secpkg.h | 740 +++ public/sdk/inc/secpri.h | 43 + public/sdk/inc/security.h | 93 + public/sdk/inc/sedapi.h | 743 +++ public/sdk/inc/sem.hxx | 20 + public/sdk/inc/sem32.hxx | 661 ++ public/sdk/inc/serialz.h | 145 + public/sdk/inc/setupapi.h | 3865 +++++++++++ public/sdk/inc/setupbat.h | 479 ++ public/sdk/inc/setupxrc.h | 52 + public/sdk/inc/shellapi.h | 516 ++ public/sdk/inc/shlguid.h | 100 + public/sdk/inc/shlobj.h | 2508 +++++++ public/sdk/inc/shlwapi.h | 196 + public/sdk/inc/sifmt.h | 29 + public/sdk/inc/sift.hxx | 71 + public/sdk/inc/simbad.h | 177 + public/sdk/inc/snmp.h | 432 ++ public/sdk/inc/spseal.h | 63 + public/sdk/inc/srvhdl.h | 983 +++ public/sdk/inc/srvhdl.idl | 347 + public/sdk/inc/sslsp.h | 149 + public/sdk/inc/sspi.h | 1601 +++++ public/sdk/inc/sstream.hxx | 120 + public/sdk/inc/stdclass.hxx | 267 + public/sdk/inc/stdobj.hxx | 432 ++ public/sdk/inc/stgint.h | 68 + public/sdk/inc/stgprop.h | 49 + public/sdk/inc/stgvar.hxx | 604 ++ public/sdk/inc/stgvara.hxx | 430 ++ public/sdk/inc/stgvarb.hxx | 95 + public/sdk/inc/storag.h | 22 + public/sdk/inc/storage.h | 15 + public/sdk/inc/storext.h | 476 ++ public/sdk/inc/storext.idl | 108 + public/sdk/inc/stream.h | 22 + public/sdk/inc/stubb.h | 22 + public/sdk/inc/subauth.h | 271 + public/sdk/inc/svcguid.h | 342 + public/sdk/inc/sysmgmt.h | 470 ++ public/sdk/inc/syssetup.h | 271 + public/sdk/inc/tapi.h | 4713 ++++++++++++++ public/sdk/inc/textserv.h | 441 ++ public/sdk/inc/tnef.h | 371 ++ public/sdk/inc/tom.h | 694 ++ public/sdk/inc/transact.h | 3981 ++++++++++++ public/sdk/inc/tspi.h | 1552 +++++ public/sdk/inc/tuple.h | 243 + public/sdk/inc/unknwn.h | 341 + public/sdk/inc/unknwn.idl | 75 + public/sdk/inc/urlmon.h | 2362 +++++++ public/sdk/inc/userenv.h | 154 + public/sdk/inc/variant.h | 15 + public/sdk/inc/vddsvc.h | 349 + public/sdk/inc/vdmdbg.h | 529 ++ public/sdk/inc/verinfo.h | 22 + public/sdk/inc/vfw.h | 3558 ++++++++++ public/sdk/inc/vquery.hxx | 190 + public/sdk/inc/vwobj.h | 22 + public/sdk/inc/vwobj2.h | 22 + public/sdk/inc/warning.h | 35 + public/sdk/inc/wdbgexts.h | 519 ++ public/sdk/inc/wfext.h | 185 + public/sdk/inc/winbase.h | 7745 ++++++++++++++++++++++ public/sdk/inc/wincon.h | 726 +++ public/sdk/inc/wincrypt.h | 623 ++ public/sdk/inc/windbgkd.h | 881 +++ public/sdk/inc/windef.h | 309 + public/sdk/inc/windows.h | 180 + public/sdk/inc/windowsx.h | 1284 ++++ public/sdk/inc/windowsx.h16 | 1208 ++++ public/sdk/inc/winerror.dbg | 1077 ++++ public/sdk/inc/winerror.h | 10179 +++++++++++++++++++++++++++++ public/sdk/inc/wingdi.h | 4005 ++++++++++++ public/sdk/inc/wininet.h | 2510 +++++++ public/sdk/inc/winioctl.h | 822 +++ public/sdk/inc/winmm.h | 14 + public/sdk/inc/winnetwk.h | 820 +++ public/sdk/inc/winnls.h | 1141 ++++ public/sdk/inc/winnls32.h | 124 + public/sdk/inc/winnt.h | 5133 +++++++++++++++ public/sdk/inc/winntos2.sed | 2 + public/sdk/inc/winperf.h | 561 ++ public/sdk/inc/winreg.h | 779 +++ public/sdk/inc/winsock.h | 959 +++ public/sdk/inc/winsock2.h | 3597 +++++++++++ public/sdk/inc/winspool.h | 2136 ++++++ public/sdk/inc/winsvc.h | 751 +++ public/sdk/inc/wintrust.h | 311 + public/sdk/inc/winuser.h | 8676 +++++++++++++++++++++++++ public/sdk/inc/winver.h | 295 + public/sdk/inc/winwlx.h | 698 ++ public/sdk/inc/wnapidec.inc | 88 + public/sdk/inc/wownt16.h | 120 + public/sdk/inc/wownt32.h | 254 + public/sdk/inc/ws2spi.h | 955 +++ public/sdk/inc/ws2tcpip.h | 71 + public/sdk/inc/wshisotp.h | 91 + public/sdk/inc/wsipx.h | 58 + public/sdk/inc/wsnetbs.h | 69 + public/sdk/inc/wsnwlink.h | 279 + public/sdk/inc/wsvns.h | 39 + public/sdk/inc/wtypes.h | 1287 ++++ public/sdk/inc/wtypes.idl | 1339 ++++ public/sdk/inc/zext.h | 603 ++ public/sdk/lib/alpha/usa/baseaddr.txt | 1538 +++++ public/sdk/lib/coffbase.txt | 903 +++ public/sdk/lib/i386/crtdll.pdb | Bin 0 -> 86016 bytes public/sdk/lib/i386/crtdlld.pdb | Bin 0 -> 2437120 bytes public/sdk/lib/i386/libc.pdb | Bin 0 -> 86016 bytes public/sdk/lib/i386/libcd.pdb | Bin 0 -> 69632 bytes public/sdk/lib/i386/libcmt.pdb | Bin 0 -> 86016 bytes public/sdk/lib/i386/libcmtd.pdb | Bin 0 -> 69632 bytes public/sdk/lib/i386/mfcs40.pdb | Bin 0 -> 585728 bytes public/sdk/lib/i386/mfcs40d.pdb | Bin 0 -> 593920 bytes public/sdk/lib/i386/mfcs40u.pdb | Bin 0 -> 585728 bytes public/sdk/lib/i386/mfcs40ud.pdb | Bin 0 -> 602112 bytes public/sdk/lib/i386/mfcs42.pdb | Bin 0 -> 708608 bytes public/sdk/lib/i386/mfcs42d.pdb | Bin 0 -> 716800 bytes public/sdk/lib/i386/mfcs42u.pdb | Bin 0 -> 708608 bytes public/sdk/lib/i386/mfcs42ud.pdb | Bin 0 -> 716800 bytes public/sdk/lib/i386/msvcrt.pdb | Bin 0 -> 86016 bytes public/sdk/lib/i386/msvcrtd.pdb | Bin 0 -> 2437120 bytes public/sdk/lib/i386/nafxcw.pdb | Bin 0 -> 569344 bytes public/sdk/lib/i386/nafxcwd.pdb | Bin 0 -> 577536 bytes public/sdk/lib/i386/uafxcw.pdb | Bin 0 -> 569344 bytes public/sdk/lib/i386/uafxcwd.pdb | Bin 0 -> 577536 bytes public/sdk/lib/i386/usa/baseaddr.txt | 1463 +++++ public/sdk/lib/mips/usa/baseaddr.txt | 1542 +++++ public/sdk/lib/ossinfo | Bin 0 -> 449 bytes public/sdk/lib/placefil.bak | 4636 +++++++++++++ public/sdk/lib/placefil.new | 4839 ++++++++++++++ public/sdk/lib/placefil.txt | 4726 ++++++++++++++ public/sdk/lib/ppc/int64.lib.vc | Bin 0 -> 17428 bytes public/sdk/lib/ppc/int64.mcl | Bin 0 -> 36756 bytes public/sdk/lib/ppc/usa/baseaddr.txt | 1525 +++++ public/sdk/lib/system.mdb | Bin 0 -> 65536 bytes public/sdk/rpc16/ct/errdb.h | 2193 +++++++ public/sdk/rpc16/ct/errors.hxx | 548 ++ public/sdk/rpc16/dos/dll/rpc16c1.map | 222 + public/sdk/rpc16/dos/dll/rpc16c1.rpc | Bin 0 -> 3399 bytes public/sdk/rpc16/dos/dll/rpc16c3.map | 335 + public/sdk/rpc16/dos/dll/rpc16c3.rpc | Bin 0 -> 10559 bytes public/sdk/rpc16/dos/dll/rpc16c4.map | 284 + public/sdk/rpc16/dos/dll/rpc16c4.rpc | Bin 0 -> 6428 bytes public/sdk/rpc16/dos/dll/rpc16c5.map | 216 + public/sdk/rpc16/dos/dll/rpc16c5.rpc | Bin 0 -> 5965 bytes public/sdk/rpc16/dos/dll/rpc16c6.map | 330 + public/sdk/rpc16/dos/dll/rpc16c6.rpc | Bin 0 -> 9365 bytes public/sdk/rpc16/dos/dll/rpc16dg3.map | 351 + public/sdk/rpc16/dos/dll/rpc16dg3.rpc | Bin 0 -> 11171 bytes public/sdk/rpc16/dos/dll/rpc16dg6.map | 329 + public/sdk/rpc16/dos/dll/rpc16dg6.rpc | Bin 0 -> 9183 bytes public/sdk/rpc16/dos/dll/rpcns.map | 305 + public/sdk/rpc16/dos/dll/rpcns.rpc | Bin 0 -> 9780 bytes public/sdk/rpc16/dos/dll/rpcnslm.map | 364 ++ public/sdk/rpc16/dos/dll/rpcnslm.rpc | Bin 0 -> 23527 bytes public/sdk/rpc16/dos/dll/rpcnsmgm.map | 387 ++ public/sdk/rpc16/dos/dll/rpcnsmgm.rpc | Bin 0 -> 20524 bytes public/sdk/rpc16/dos/dll/security.map | 353 + public/sdk/rpc16/dos/dll/security.rpc | Bin 0 -> 16000 bytes public/sdk/rpc16/dos/inc/midles.h | 218 + public/sdk/rpc16/dos/inc/rpc.h | 64 + public/sdk/rpc16/dos/inc/rpcdce.h | 1618 +++++ public/sdk/rpc16/dos/inc/rpcdcep.h | 415 ++ public/sdk/rpc16/dos/inc/rpcerr.h | 188 + public/sdk/rpc16/dos/inc/rpcndr.h | 2630 ++++++++ public/sdk/rpc16/dos/inc/rpcnsi.h | 509 ++ public/sdk/rpc16/dos/inc/rpcnsip.h | 72 + public/sdk/rpc16/dos/inc/rpcx86.h | 74 + public/sdk/rpc16/mac/inc/midles.h | 218 + public/sdk/rpc16/mac/inc/rpc.h | 71 + public/sdk/rpc16/mac/inc/rpcdce.h | 1618 +++++ public/sdk/rpc16/mac/inc/rpcdcep.h | 415 ++ public/sdk/rpc16/mac/inc/rpcerr.h | 188 + public/sdk/rpc16/mac/inc/rpcmac.h | 121 + public/sdk/rpc16/mac/inc/rpcndr.h | 2630 ++++++++ public/sdk/rpc16/mac/inc/rpcnsi.h | 509 ++ public/sdk/rpc16/mac/inc/rpcnsip.h | 72 + public/sdk/rpc16/mppc/inc/midles.h | 218 + public/sdk/rpc16/mppc/inc/rpc.h | 71 + public/sdk/rpc16/mppc/inc/rpcdce.h | 1618 +++++ public/sdk/rpc16/mppc/inc/rpcdcep.h | 415 ++ public/sdk/rpc16/mppc/inc/rpcerr.h | 188 + public/sdk/rpc16/mppc/inc/rpcmac.h | 121 + public/sdk/rpc16/mppc/inc/rpcndr.h | 2630 ++++++++ public/sdk/rpc16/mppc/inc/rpcnsi.h | 509 ++ public/sdk/rpc16/mppc/inc/rpcnsip.h | 72 + public/sdk/rpc16/sdk/dnetapi.dl_ | Bin 0 -> 525 bytes public/sdk/rpc16/sdk/drpc.h_ | Bin 0 -> 636 bytes public/sdk/rpc16/sdk/drpc.li_ | Bin 0 -> 173479 bytes public/sdk/rpc16/sdk/drpcndr.li_ | Bin 0 -> 549 bytes public/sdk/rpc16/sdk/midles.h_ | Bin 0 -> 1889 bytes public/sdk/rpc16/sdk/mrpc.h_ | Bin 0 -> 740 bytes public/sdk/rpc16/sdk/mrpc.li_ | Bin 0 -> 145206 bytes public/sdk/rpc16/sdk/mscuistf.dl_ | Bin 0 -> 18719 bytes public/sdk/rpc16/sdk/msdetect.inc | 661 ++ public/sdk/rpc16/sdk/readme.txt | 54 + public/sdk/rpc16/sdk/rpcdce.h_ | Bin 0 -> 8741 bytes public/sdk/rpc16/sdk/rpcdcep.h_ | Bin 0 -> 3250 bytes public/sdk/rpc16/sdk/rpcerr.h_ | Bin 0 -> 2454 bytes public/sdk/rpc16/sdk/rpcmac.h_ | Bin 0 -> 987 bytes public/sdk/rpc16/sdk/rpcndr.h_ | Bin 0 -> 19307 bytes public/sdk/rpc16/sdk/rpcnsi.h_ | Bin 0 -> 2977 bytes public/sdk/rpc16/sdk/rpcnsip.h_ | Bin 0 -> 688 bytes public/sdk/rpc16/sdk/rpcsdk.in_ | Bin 0 -> 928 bytes public/sdk/rpc16/sdk/rpcsdk.mst | 786 +++ public/sdk/rpc16/sdk/rpcx86.h_ | Bin 0 -> 670 bytes public/sdk/rpc16/sdk/setup.lst | 20 + public/sdk/rpc16/sdk/setupapi.inc | 1803 ++++++ public/sdk/rpc16/sdk/setuprun.lst | 21 + public/sdk/rpc16/sdk/uuidgen.ex_ | Bin 0 -> 103184 bytes public/sdk/rpc16/sdk/wrpc.h_ | Bin 0 -> 715 bytes public/sdk/rpc16/sdk/wrpc.li_ | Bin 0 -> 14376 bytes public/sdk/rpc16/sdk/wrpcndr.li_ | Bin 0 -> 555 bytes public/sdk/rpc16/win/dll/rpc16c1.map | 92 + public/sdk/rpc16/win/dll/rpc16c1.sym | Bin 0 -> 468 bytes public/sdk/rpc16/win/dll/rpc16c3.map | 443 ++ public/sdk/rpc16/win/dll/rpc16c3.sym | Bin 0 -> 2260 bytes public/sdk/rpc16/win/dll/rpc16c4.map | 415 ++ public/sdk/rpc16/win/dll/rpc16c4.sym | Bin 0 -> 2196 bytes public/sdk/rpc16/win/dll/rpc16c5.map | 129 + public/sdk/rpc16/win/dll/rpc16c5.sym | Bin 0 -> 900 bytes public/sdk/rpc16/win/dll/rpc16c6.map | 314 + public/sdk/rpc16/win/dll/rpc16c6.sym | Bin 0 -> 3316 bytes public/sdk/rpc16/win/dll/rpc16c8.map | 176 + public/sdk/rpc16/win/dll/rpc16c8.sym | Bin 0 -> 916 bytes public/sdk/rpc16/win/dll/rpc16dg3.map | 156 + public/sdk/rpc16/win/dll/rpc16dg3.sym | Bin 0 -> 820 bytes public/sdk/rpc16/win/dll/rpc16dg6.map | 319 + public/sdk/rpc16/win/dll/rpc16dg6.sym | Bin 0 -> 3492 bytes public/sdk/rpc16/win/dll/rpcns1.map | 437 ++ public/sdk/rpc16/win/dll/rpcns1.sym | Bin 0 -> 3764 bytes public/sdk/rpc16/win/dll/rpcrt1.map | 2840 ++++++++ public/sdk/rpc16/win/dll/rpcrt1.sym | Bin 0 -> 36676 bytes public/sdk/rpc16/win/dll/security.map | 536 ++ public/sdk/rpc16/win/dll/security.sym | Bin 0 -> 3476 bytes public/sdk/rpc16/win/inc/midles.h | 218 + public/sdk/rpc16/win/inc/rpc.h | 69 + public/sdk/rpc16/win/inc/rpcdce.h | 1618 +++++ public/sdk/rpc16/win/inc/rpcdcep.h | 415 ++ public/sdk/rpc16/win/inc/rpcerr.h | 188 + public/sdk/rpc16/win/inc/rpcndr.h | 2630 ++++++++ public/sdk/rpc16/win/inc/rpcnsi.h | 509 ++ public/sdk/rpc16/win/inc/rpcnsip.h | 72 + public/sdk/rpc16/win/inc/rpcx86.h | 74 + public/sdk/rpc16/win/lib/winmain.def | 16 + public/sdk/rpc16/win/lib/winmain.res | Bin 0 -> 83 bytes 1146 files changed, 560510 insertions(+) create mode 100644 public/sdk/bin/alpha/ddhelp.pdb create mode 100644 public/sdk/bin/hc.bat create mode 100644 public/sdk/bin/hc31.err create mode 100644 public/sdk/bin/ole2view.hlp create mode 100644 public/sdk/bin/oletools.hlp create mode 100644 public/sdk/bin/shed.hlp create mode 100644 public/sdk/bin/win32api.dat create mode 100644 public/sdk/inc/386align.tab create mode 100644 public/sdk/inc/accctrl.h create mode 100644 public/sdk/inc/aclapi.h create mode 100644 public/sdk/inc/advsn2.h create mode 100644 public/sdk/inc/advsnk.h create mode 100644 public/sdk/inc/alertapi.h create mode 100644 public/sdk/inc/align.hxx create mode 100644 public/sdk/inc/allerror.h create mode 100644 public/sdk/inc/alphalgn.tab create mode 100644 public/sdk/inc/alphaops.h create mode 100644 public/sdk/inc/alphxcpt.tab create mode 100644 public/sdk/inc/asn1code.h create mode 100644 public/sdk/inc/asn1hdr.h create mode 100644 public/sdk/inc/asn1util.h create mode 100644 public/sdk/inc/assert.hxx create mode 100644 public/sdk/inc/atalkwsh.h create mode 100644 public/sdk/inc/basetyps.h create mode 100644 public/sdk/inc/bndctx.h create mode 100644 public/sdk/inc/bootetfs.h create mode 100644 public/sdk/inc/bootfat.h create mode 100644 public/sdk/inc/boothpfs.h create mode 100644 public/sdk/inc/bootmbr.h create mode 100644 public/sdk/inc/bootntfs.h create mode 100644 public/sdk/inc/bootofs.h create mode 100644 public/sdk/inc/caiseapi.h create mode 100644 public/sdk/inc/callconv.inc create mode 100644 public/sdk/inc/catstg.h create mode 100644 public/sdk/inc/cderr.h create mode 100644 public/sdk/inc/cdlink.hxx create mode 100644 public/sdk/inc/cfg.h create mode 100644 public/sdk/inc/cfgmgr32.h create mode 100644 public/sdk/inc/cguid.h create mode 100644 public/sdk/inc/chicago/ipropidl.h create mode 100644 public/sdk/inc/chicago/ipropidl.idl create mode 100644 public/sdk/inc/chicago/oaidl.h create mode 100644 public/sdk/inc/chicago/oaidl.idl create mode 100644 public/sdk/inc/chicago/objidl.h create mode 100644 public/sdk/inc/chicago/objidl.idl create mode 100644 public/sdk/inc/chicago/ocidl.idl create mode 100644 public/sdk/inc/chicago/oleidl.h create mode 100644 public/sdk/inc/chicago/oleidl.idl create mode 100644 public/sdk/inc/chicago/srvhdl.h create mode 100644 public/sdk/inc/chicago/srvhdl.idl create mode 100644 public/sdk/inc/chicago/storext.h create mode 100644 public/sdk/inc/chicago/storext.idl create mode 100644 public/sdk/inc/chicago/unknwn.h create mode 100644 public/sdk/inc/chicago/unknwn.idl create mode 100644 public/sdk/inc/chicago/wtypes.h create mode 100644 public/sdk/inc/chicago/wtypes.idl create mode 100644 public/sdk/inc/ciscan.h create mode 100644 public/sdk/inc/cisvc.hxx create mode 100644 public/sdk/inc/classf.h create mode 100644 public/sdk/inc/cluster.h create mode 100644 public/sdk/inc/cobjps.h create mode 100644 public/sdk/inc/coguid.h create mode 100644 public/sdk/inc/color.dlg create mode 100644 public/sdk/inc/colordlg.h create mode 100644 public/sdk/inc/commctrl.h create mode 100644 public/sdk/inc/commdlg.h create mode 100644 public/sdk/inc/common.ver create mode 100644 public/sdk/inc/compobj.h create mode 100644 public/sdk/inc/cpl.h create mode 100644 public/sdk/inc/crash.h create mode 100644 public/sdk/inc/crt/assert.h create mode 100644 public/sdk/inc/crt/conio.h create mode 100644 public/sdk/inc/crt/crtdbg.h create mode 100644 public/sdk/inc/crt/ctype.h create mode 100644 public/sdk/inc/crt/direct.h create mode 100644 public/sdk/inc/crt/dos.h create mode 100644 public/sdk/inc/crt/eh.h create mode 100644 public/sdk/inc/crt/errno.h create mode 100644 public/sdk/inc/crt/excpt.h create mode 100644 public/sdk/inc/crt/fcntl.h create mode 100644 public/sdk/inc/crt/float.h create mode 100644 public/sdk/inc/crt/fpieee.h create mode 100644 public/sdk/inc/crt/fstream.h create mode 100644 public/sdk/inc/crt/io.h create mode 100644 public/sdk/inc/crt/iomanip.h create mode 100644 public/sdk/inc/crt/ios.h create mode 100644 public/sdk/inc/crt/iostream.h create mode 100644 public/sdk/inc/crt/istream.h create mode 100644 public/sdk/inc/crt/limits.h create mode 100644 public/sdk/inc/crt/locale.h create mode 100644 public/sdk/inc/crt/malloc.h create mode 100644 public/sdk/inc/crt/math.h create mode 100644 public/sdk/inc/crt/mbctype.h create mode 100644 public/sdk/inc/crt/mbstring.h create mode 100644 public/sdk/inc/crt/memory.h create mode 100644 public/sdk/inc/crt/new.h create mode 100644 public/sdk/inc/crt/ostream.h create mode 100644 public/sdk/inc/crt/process.h create mode 100644 public/sdk/inc/crt/search.h create mode 100644 public/sdk/inc/crt/setjmp.h create mode 100644 public/sdk/inc/crt/setjmpex.h create mode 100644 public/sdk/inc/crt/share.h create mode 100644 public/sdk/inc/crt/signal.h create mode 100644 public/sdk/inc/crt/stdarg.h create mode 100644 public/sdk/inc/crt/stddef.h create mode 100644 public/sdk/inc/crt/stdexcpt.h create mode 100644 public/sdk/inc/crt/stdio.h create mode 100644 public/sdk/inc/crt/stdiostr.h create mode 100644 public/sdk/inc/crt/stdlib.h create mode 100644 public/sdk/inc/crt/streamb.h create mode 100644 public/sdk/inc/crt/string.h create mode 100644 public/sdk/inc/crt/strstrea.h create mode 100644 public/sdk/inc/crt/sys/locking.h create mode 100644 public/sdk/inc/crt/sys/stat.h create mode 100644 public/sdk/inc/crt/sys/timeb.h create mode 100644 public/sdk/inc/crt/sys/types.h create mode 100644 public/sdk/inc/crt/sys/utime.h create mode 100644 public/sdk/inc/crt/tchar.h create mode 100644 public/sdk/inc/crt/time.h create mode 100644 public/sdk/inc/crt/typeinfo.h create mode 100644 public/sdk/inc/crt/varargs.h create mode 100644 public/sdk/inc/crt/wchar.h create mode 100644 public/sdk/inc/crt/wcstr.h create mode 100644 public/sdk/inc/ctl3d.h create mode 100644 public/sdk/inc/custcntl.h create mode 100644 public/sdk/inc/dadvhr.h create mode 100644 public/sdk/inc/datobj.h create mode 100644 public/sdk/inc/dbcmdtre.hxx create mode 100644 public/sdk/inc/dbgpoint.hxx create mode 100644 public/sdk/inc/dbt.h create mode 100644 public/sdk/inc/dciddi.h create mode 100644 public/sdk/inc/dciman.h create mode 100644 public/sdk/inc/dde.h create mode 100644 public/sdk/inc/ddeml.h create mode 100644 public/sdk/inc/ddraw.h create mode 100644 public/sdk/inc/debnot.h create mode 100644 public/sdk/inc/devguid.h create mode 100644 public/sdk/inc/devioctl.h create mode 100644 public/sdk/inc/dfsapi.h create mode 100644 public/sdk/inc/dhcpcext.h create mode 100644 public/sdk/inc/diamondc.h create mode 100644 public/sdk/inc/diamondd.h create mode 100644 public/sdk/inc/digitalv.h create mode 100644 public/sdk/inc/disasm.h create mode 100644 public/sdk/inc/dispatch.h create mode 100644 public/sdk/inc/dlcapi.h create mode 100644 public/sdk/inc/dlgs.h create mode 100644 public/sdk/inc/dlink.hxx create mode 100644 public/sdk/inc/dllsem.hxx create mode 100644 public/sdk/inc/dplay.h create mode 100644 public/sdk/inc/drivinit.h create mode 100644 public/sdk/inc/drpsrc.h create mode 100644 public/sdk/inc/drptgt.h create mode 100644 public/sdk/inc/dsapi.h create mode 100644 public/sdk/inc/dsound.h create mode 100644 public/sdk/inc/dsstate.h create mode 100644 public/sdk/inc/dvobj.h create mode 100644 public/sdk/inc/efrmte.h create mode 100644 public/sdk/inc/emonkr.h create mode 100644 public/sdk/inc/eoverb.h create mode 100644 public/sdk/inc/estatd.h create mode 100644 public/sdk/inc/estats.h create mode 100644 public/sdk/inc/estrng.h create mode 100644 public/sdk/inc/etype.h create mode 100644 public/sdk/inc/eunk.h create mode 100644 public/sdk/inc/except.hxx create mode 100644 public/sdk/inc/exchext.h create mode 100644 public/sdk/inc/exchextx.h create mode 100644 public/sdk/inc/ext.h create mode 100644 public/sdk/inc/extcon.h create mode 100644 public/sdk/inc/fasttest.inc create mode 100644 public/sdk/inc/fileopen.dlg create mode 100644 public/sdk/inc/filter.h create mode 100644 public/sdk/inc/filterr.h create mode 100644 public/sdk/inc/findtext.dlg create mode 100644 public/sdk/inc/font.dlg create mode 100644 public/sdk/inc/fstream.hxx create mode 100644 public/sdk/inc/ftestkey.mst create mode 100644 public/sdk/inc/ftestlog.mst create mode 100644 public/sdk/inc/ftestutl.mst create mode 100644 public/sdk/inc/ftsiface.h create mode 100644 public/sdk/inc/getuser.h create mode 100644 public/sdk/inc/gl/gl.h create mode 100644 public/sdk/inc/gl/glaux.h create mode 100644 public/sdk/inc/gl/glu.h create mode 100644 public/sdk/inc/gluon.h create mode 100644 public/sdk/inc/grpcpy.hxx create mode 100644 public/sdk/inc/httpext.h create mode 100644 public/sdk/inc/httpfilt.h create mode 100644 public/sdk/inc/icmpapi.h create mode 100644 public/sdk/inc/icntnr.h create mode 100644 public/sdk/inc/ilink.hxx create mode 100644 public/sdk/inc/ilinkp.hxx create mode 100644 public/sdk/inc/imagehlp.h create mode 100644 public/sdk/inc/imaloc.h create mode 100644 public/sdk/inc/ime.h create mode 100644 public/sdk/inc/imessage.h create mode 100644 public/sdk/inc/imm.h create mode 100644 public/sdk/inc/infstr.h create mode 100644 public/sdk/inc/initguid.h create mode 100644 public/sdk/inc/inplca.h create mode 100644 public/sdk/inc/inplcf.h create mode 100644 public/sdk/inc/inplco.h create mode 100644 public/sdk/inc/inplcs.h create mode 100644 public/sdk/inc/inplcu.h create mode 100644 public/sdk/inc/iofs.h create mode 100644 public/sdk/inc/ipexport.h create mode 100644 public/sdk/inc/ipropidl.h create mode 100644 public/sdk/inc/ipropidl.idl create mode 100644 public/sdk/inc/issper16.h create mode 100644 public/sdk/inc/issperr.dbg create mode 100644 public/sdk/inc/issperr.h create mode 100644 public/sdk/inc/isvbop.h create mode 100644 public/sdk/inc/isvbop.inc create mode 100644 public/sdk/inc/kerbcon.h create mode 100644 public/sdk/inc/kerberos.h create mode 100644 public/sdk/inc/ks386.inc create mode 100644 public/sdk/inc/ksalpha.h create mode 100644 public/sdk/inc/ksmips.h create mode 100644 public/sdk/inc/ksppc.h create mode 100644 public/sdk/inc/kxalpha.h create mode 100644 public/sdk/inc/kxmips.h create mode 100644 public/sdk/inc/kxppc.h create mode 100644 public/sdk/inc/linkinfo.h create mode 100644 public/sdk/inc/lm.h create mode 100644 public/sdk/inc/lmaccess.h create mode 100644 public/sdk/inc/lmalert.h create mode 100644 public/sdk/inc/lmapibuf.h create mode 100644 public/sdk/inc/lmat.h create mode 100644 public/sdk/inc/lmaudit.h create mode 100644 public/sdk/inc/lmbrowsr.h create mode 100644 public/sdk/inc/lmchdev.h create mode 100644 public/sdk/inc/lmconfig.h create mode 100644 public/sdk/inc/lmcons.h create mode 100644 public/sdk/inc/lmdfs.h create mode 100644 public/sdk/inc/lmerr.h create mode 100644 public/sdk/inc/lmerrlog.h create mode 100644 public/sdk/inc/lmmsg.h create mode 100644 public/sdk/inc/lmremutl.h create mode 100644 public/sdk/inc/lmrepl.h create mode 100644 public/sdk/inc/lmrpl.h create mode 100644 public/sdk/inc/lmserver.h create mode 100644 public/sdk/inc/lmshare.h create mode 100644 public/sdk/inc/lmsname.h create mode 100644 public/sdk/inc/lmstats.h create mode 100644 public/sdk/inc/lmsvc.h create mode 100644 public/sdk/inc/lmuse.h create mode 100644 public/sdk/inc/lmuseflg.h create mode 100644 public/sdk/inc/lmwksta.h create mode 100644 public/sdk/inc/lnkobjid.hxx create mode 100644 public/sdk/inc/loadperf.h create mode 100644 public/sdk/inc/lockb.h create mode 100644 public/sdk/inc/lrpcmon.h create mode 100644 public/sdk/inc/lzexpand.h create mode 100644 public/sdk/inc/mac386.inc create mode 100644 public/sdk/inc/macfile.h create mode 100644 public/sdk/inc/makefil1 create mode 100644 public/sdk/inc/mapi.h create mode 100644 public/sdk/inc/mapicode.h create mode 100644 public/sdk/inc/mapidbg.h create mode 100644 public/sdk/inc/mapidefs.h create mode 100644 public/sdk/inc/mapiform.h create mode 100644 public/sdk/inc/mapiguid.h create mode 100644 public/sdk/inc/mapinls.h create mode 100644 public/sdk/inc/mapispi.h create mode 100644 public/sdk/inc/mapitags.h create mode 100644 public/sdk/inc/mapiutil.h create mode 100644 public/sdk/inc/mapival.h create mode 100644 public/sdk/inc/mapiwin.h create mode 100644 public/sdk/inc/mapiwz.h create mode 100644 public/sdk/inc/mapix.h create mode 100644 public/sdk/inc/marshl.h create mode 100644 public/sdk/inc/mciavi.h create mode 100644 public/sdk/inc/mcx.h create mode 100644 public/sdk/inc/memdeser.hxx create mode 100644 public/sdk/inc/memser.hxx create mode 100644 public/sdk/inc/mfc30/afx.h create mode 100644 public/sdk/inc/mfc30/afx.inl create mode 100644 public/sdk/inc/mfc30/afxaete.r create mode 100644 public/sdk/inc/mfc30/afxcmn.h create mode 100644 public/sdk/inc/mfc30/afxcmn.inl create mode 100644 public/sdk/inc/mfc30/afxcoll.h create mode 100644 public/sdk/inc/mfc30/afxcoll.inl create mode 100644 public/sdk/inc/mfc30/afxdb.h create mode 100644 public/sdk/inc/mfc30/afxdb.inl create mode 100644 public/sdk/inc/mfc30/afxdb.rc create mode 100644 public/sdk/inc/mfc30/afxdd_.h create mode 100644 public/sdk/inc/mfc30/afxdisp.h create mode 100644 public/sdk/inc/mfc30/afxdlgs.h create mode 100644 public/sdk/inc/mfc30/afxdlgs.inl create mode 100644 public/sdk/inc/mfc30/afxdll_.h create mode 100644 public/sdk/inc/mfc30/afxdllx.h create mode 100644 public/sdk/inc/mfc30/afxext.h create mode 100644 public/sdk/inc/mfc30/afxext.inl create mode 100644 public/sdk/inc/mfc30/afxhelp.hm create mode 100644 public/sdk/inc/mfc30/afxmsg_.h create mode 100644 public/sdk/inc/mfc30/afxodlgs.h create mode 100644 public/sdk/inc/mfc30/afxole.h create mode 100644 public/sdk/inc/mfc30/afxole.inl create mode 100644 public/sdk/inc/mfc30/afxolecl.rc create mode 100644 public/sdk/inc/mfc30/afxolesv.rc create mode 100644 public/sdk/inc/mfc30/afxplex_.h create mode 100644 public/sdk/inc/mfc30/afxprint.rc create mode 100644 public/sdk/inc/mfc30/afxpriv.h create mode 100644 public/sdk/inc/mfc30/afxres.aps create mode 100644 public/sdk/inc/mfc30/afxres.h create mode 100644 public/sdk/inc/mfc30/afxres.rc create mode 100644 public/sdk/inc/mfc30/afxsock.h create mode 100644 public/sdk/inc/mfc30/afxsock.inl create mode 100644 public/sdk/inc/mfc30/afxstat_.h create mode 100644 public/sdk/inc/mfc30/afxtempl.h create mode 100644 public/sdk/inc/mfc30/afxv_cfg.h create mode 100644 public/sdk/inc/mfc30/afxv_cpu.h create mode 100644 public/sdk/inc/mfc30/afxv_dll.h create mode 100644 public/sdk/inc/mfc30/afxv_mac.h create mode 100644 public/sdk/inc/mfc30/afxv_w32.h create mode 100644 public/sdk/inc/mfc30/afxver_.h create mode 100644 public/sdk/inc/mfc30/afxwin.h create mode 100644 public/sdk/inc/mfc30/afxwin1.inl create mode 100644 public/sdk/inc/mfc30/afxwin2.inl create mode 100644 public/sdk/inc/mfc30/commctrl.h create mode 100644 public/sdk/inc/mfc30/l.deu/afxdb.rc create mode 100644 public/sdk/inc/mfc30/l.deu/afxolecl.rc create mode 100644 public/sdk/inc/mfc30/l.deu/afxolesv.rc create mode 100644 public/sdk/inc/mfc30/l.deu/afxprint.rc create mode 100644 public/sdk/inc/mfc30/l.deu/afxres.aps create mode 100644 public/sdk/inc/mfc30/l.deu/afxres.rc create mode 100644 public/sdk/inc/mfc30/l.fra/afxdb.rc create mode 100644 public/sdk/inc/mfc30/l.fra/afxolecl.rc create mode 100644 public/sdk/inc/mfc30/l.fra/afxolesv.rc create mode 100644 public/sdk/inc/mfc30/l.fra/afxprint.rc create mode 100644 public/sdk/inc/mfc30/l.fra/afxres.rc create mode 100644 public/sdk/inc/mfc30/l.jpn/afxdb.rc create mode 100644 public/sdk/inc/mfc30/l.jpn/afxolecl.rc create mode 100644 public/sdk/inc/mfc30/l.jpn/afxolesv.rc create mode 100644 public/sdk/inc/mfc30/l.jpn/afxprint.rc create mode 100644 public/sdk/inc/mfc30/l.jpn/afxres.aps create mode 100644 public/sdk/inc/mfc30/l.jpn/afxres.rc create mode 100644 public/sdk/inc/mfc30/mapi.h create mode 100644 public/sdk/inc/mfc30/ole2ansi.h create mode 100644 public/sdk/inc/mfc30/ole2ui.h create mode 100644 public/sdk/inc/mfc30/oledlgs.h create mode 100644 public/sdk/inc/mfc30/res/copy4way.cur create mode 100644 public/sdk/inc/mfc30/res/help.cur create mode 100644 public/sdk/inc/mfc30/res/help.rsc create mode 100644 public/sdk/inc/mfc30/res/magnify.cur create mode 100644 public/sdk/inc/mfc30/res/magnify.rsc create mode 100644 public/sdk/inc/mfc30/res/minifwnd.bmp create mode 100644 public/sdk/inc/mfc30/res/move4way.cur create mode 100644 public/sdk/inc/mfc30/res/nodrop.cur create mode 100644 public/sdk/inc/mfc30/res/psscr.bmp create mode 100644 public/sdk/inc/mfc30/res/psscr_l.bmp create mode 100644 public/sdk/inc/mfc30/res/psscr_ld.bmp create mode 100644 public/sdk/inc/mfc30/res/psscr_r.bmp create mode 100644 public/sdk/inc/mfc30/res/psscr_rd.bmp create mode 100644 public/sdk/inc/mfc30/res/psscroll.bmp create mode 100644 public/sdk/inc/mfc30/res/sarrows.cur create mode 100644 public/sdk/inc/mfc30/res/split.rsc create mode 100644 public/sdk/inc/mfc30/res/splith.cur create mode 100644 public/sdk/inc/mfc30/res/splitv.cur create mode 100644 public/sdk/inc/mfc30/res/trck4way.cur create mode 100644 public/sdk/inc/mfc30/res/trcknesw.cur create mode 100644 public/sdk/inc/mfc30/res/trckns.cur create mode 100644 public/sdk/inc/mfc30/res/trcknwse.cur create mode 100644 public/sdk/inc/mfc30/res/trckwe.cur create mode 100644 public/sdk/inc/mfc30/winres.h create mode 100644 public/sdk/inc/mfc40/afx.h create mode 100644 public/sdk/inc/mfc40/afx.inl create mode 100644 public/sdk/inc/mfc40/afxadv.h create mode 100644 public/sdk/inc/mfc40/afxaete.r create mode 100644 public/sdk/inc/mfc40/afxcmn.h create mode 100644 public/sdk/inc/mfc40/afxcmn.inl create mode 100644 public/sdk/inc/mfc40/afxcoll.h create mode 100644 public/sdk/inc/mfc40/afxcoll.inl create mode 100644 public/sdk/inc/mfc40/afxctl.h create mode 100644 public/sdk/inc/mfc40/afxctl.inl create mode 100644 public/sdk/inc/mfc40/afxctl.rc create mode 100644 public/sdk/inc/mfc40/afxcview.h create mode 100644 public/sdk/inc/mfc40/afxcview.inl create mode 100644 public/sdk/inc/mfc40/afxdao.h create mode 100644 public/sdk/inc/mfc40/afxdao.inl create mode 100644 public/sdk/inc/mfc40/afxdb.h create mode 100644 public/sdk/inc/mfc40/afxdb.inl create mode 100644 public/sdk/inc/mfc40/afxdb.rc create mode 100644 public/sdk/inc/mfc40/afxdb_.h create mode 100644 public/sdk/inc/mfc40/afxdd_.h create mode 100644 public/sdk/inc/mfc40/afxdisp.h create mode 100644 public/sdk/inc/mfc40/afxdlgs.h create mode 100644 public/sdk/inc/mfc40/afxdlgs.inl create mode 100644 public/sdk/inc/mfc40/afxdll_.h create mode 100644 public/sdk/inc/mfc40/afxdllx.h create mode 100644 public/sdk/inc/mfc40/afxext.h create mode 100644 public/sdk/inc/mfc40/afxext.inl create mode 100644 public/sdk/inc/mfc40/afxhelp.hm create mode 100644 public/sdk/inc/mfc40/afxisapi.h create mode 100644 public/sdk/inc/mfc40/afxisapi.inl create mode 100644 public/sdk/inc/mfc40/afxisapi.rc create mode 100644 public/sdk/inc/mfc40/afxmsg_.h create mode 100644 public/sdk/inc/mfc40/afxmt.h create mode 100644 public/sdk/inc/mfc40/afxmt.inl create mode 100644 public/sdk/inc/mfc40/afxodlgs.h create mode 100644 public/sdk/inc/mfc40/afxole.h create mode 100644 public/sdk/inc/mfc40/afxole.inl create mode 100644 public/sdk/inc/mfc40/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/afxplex_.h create mode 100644 public/sdk/inc/mfc40/afxprint.rc create mode 100644 public/sdk/inc/mfc40/afxpriv.h create mode 100644 public/sdk/inc/mfc40/afxres.h create mode 100644 public/sdk/inc/mfc40/afxres.rc create mode 100644 public/sdk/inc/mfc40/afxrich.h create mode 100644 public/sdk/inc/mfc40/afxrich.inl create mode 100644 public/sdk/inc/mfc40/afxsock.h create mode 100644 public/sdk/inc/mfc40/afxsock.inl create mode 100644 public/sdk/inc/mfc40/afxstat_.h create mode 100644 public/sdk/inc/mfc40/afxtempl.h create mode 100644 public/sdk/inc/mfc40/afxtls_.h create mode 100644 public/sdk/inc/mfc40/afxv_cfg.h create mode 100644 public/sdk/inc/mfc40/afxv_cpu.h create mode 100644 public/sdk/inc/mfc40/afxv_dll.h create mode 100644 public/sdk/inc/mfc40/afxv_mac.h create mode 100644 public/sdk/inc/mfc40/afxv_w32.h create mode 100644 public/sdk/inc/mfc40/afxver_.h create mode 100644 public/sdk/inc/mfc40/afxwin.h create mode 100644 public/sdk/inc/mfc40/afxwin1.inl create mode 100644 public/sdk/inc/mfc40/afxwin2.inl create mode 100644 public/sdk/inc/mfc40/daogetrw.h create mode 100644 public/sdk/inc/mfc40/dbdaoerr.h create mode 100644 public/sdk/inc/mfc40/dbdaoid.h create mode 100644 public/sdk/inc/mfc40/dbdaoint.h create mode 100644 public/sdk/inc/mfc40/l.chs/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.chs/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.chs/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.chs/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.chs/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.chs/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.deu/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.esp/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.fra/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.ita/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.jpn/afxres.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxctl.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxdb.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxolecl.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxolesv.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxprint.rc create mode 100644 public/sdk/inc/mfc40/l.kor/afxres.rc create mode 100644 public/sdk/inc/mfc40/mfcsamps.mak create mode 100644 public/sdk/inc/mfc40/res/3dcheck.bmp create mode 100644 public/sdk/inc/mfc40/res/95check.bmp create mode 100644 public/sdk/inc/mfc40/res/copy4way.cur create mode 100644 public/sdk/inc/mfc40/res/help.cur create mode 100644 public/sdk/inc/mfc40/res/help.rsc create mode 100644 public/sdk/inc/mfc40/res/magnify.cur create mode 100644 public/sdk/inc/mfc40/res/magnify.rsc create mode 100644 public/sdk/inc/mfc40/res/minifwnd.bmp create mode 100644 public/sdk/inc/mfc40/res/move4way.cur create mode 100644 public/sdk/inc/mfc40/res/nodrop.cur create mode 100644 public/sdk/inc/mfc40/res/ntcheck.bmp create mode 100644 public/sdk/inc/mfc40/res/sarrows.cur create mode 100644 public/sdk/inc/mfc40/res/split.rsc create mode 100644 public/sdk/inc/mfc40/res/splith.cur create mode 100644 public/sdk/inc/mfc40/res/splitv.cur create mode 100644 public/sdk/inc/mfc40/res/trck4way.cur create mode 100644 public/sdk/inc/mfc40/res/trcknesw.cur create mode 100644 public/sdk/inc/mfc40/res/trckns.cur create mode 100644 public/sdk/inc/mfc40/res/trcknwse.cur create mode 100644 public/sdk/inc/mfc40/res/trckwe.cur create mode 100644 public/sdk/inc/mfc40/res/truetype.bmp create mode 100644 public/sdk/inc/mfc40/sql.h create mode 100644 public/sdk/inc/mfc40/sqlext.h create mode 100644 public/sdk/inc/mfc40/sqltypes.h create mode 100644 public/sdk/inc/mfc40/winres.h create mode 100644 public/sdk/inc/mfc42/afx.h create mode 100644 public/sdk/inc/mfc42/afx.inl create mode 100644 public/sdk/inc/mfc42/afxadv.h create mode 100644 public/sdk/inc/mfc42/afxaete.r create mode 100644 public/sdk/inc/mfc42/afxcmn.h create mode 100644 public/sdk/inc/mfc42/afxcmn.inl create mode 100644 public/sdk/inc/mfc42/afxcoll.h create mode 100644 public/sdk/inc/mfc42/afxcoll.inl create mode 100644 public/sdk/inc/mfc42/afxcom_.h create mode 100644 public/sdk/inc/mfc42/afxconv.h create mode 100644 public/sdk/inc/mfc42/afxctl.h create mode 100644 public/sdk/inc/mfc42/afxctl.inl create mode 100644 public/sdk/inc/mfc42/afxctl.rc create mode 100644 public/sdk/inc/mfc42/afxcview.h create mode 100644 public/sdk/inc/mfc42/afxcview.inl create mode 100644 public/sdk/inc/mfc42/afxdao.h create mode 100644 public/sdk/inc/mfc42/afxdao.inl create mode 100644 public/sdk/inc/mfc42/afxdb.h create mode 100644 public/sdk/inc/mfc42/afxdb.inl create mode 100644 public/sdk/inc/mfc42/afxdb.rc create mode 100644 public/sdk/inc/mfc42/afxdb_.h create mode 100644 public/sdk/inc/mfc42/afxdd_.h create mode 100644 public/sdk/inc/mfc42/afxdisp.h create mode 100644 public/sdk/inc/mfc42/afxdlgs.h create mode 100644 public/sdk/inc/mfc42/afxdlgs.inl create mode 100644 public/sdk/inc/mfc42/afxdll_.h create mode 100644 public/sdk/inc/mfc42/afxdllx.h create mode 100644 public/sdk/inc/mfc42/afxdocob.h create mode 100644 public/sdk/inc/mfc42/afxext.h create mode 100644 public/sdk/inc/mfc42/afxext.inl create mode 100644 public/sdk/inc/mfc42/afxhelp.hm create mode 100644 public/sdk/inc/mfc42/afxinet.h create mode 100644 public/sdk/inc/mfc42/afxinet.inl create mode 100644 public/sdk/inc/mfc42/afxisapi.h create mode 100644 public/sdk/inc/mfc42/afxisapi.inl create mode 100644 public/sdk/inc/mfc42/afxisapi.rc create mode 100644 public/sdk/inc/mfc42/afxmsg_.h create mode 100644 public/sdk/inc/mfc42/afxmt.h create mode 100644 public/sdk/inc/mfc42/afxmt.inl create mode 100644 public/sdk/inc/mfc42/afxodlgs.h create mode 100644 public/sdk/inc/mfc42/afxole.h create mode 100644 public/sdk/inc/mfc42/afxole.inl create mode 100644 public/sdk/inc/mfc42/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/afxplex_.h create mode 100644 public/sdk/inc/mfc42/afxprint.rc create mode 100644 public/sdk/inc/mfc42/afxpriv.h create mode 100644 public/sdk/inc/mfc42/afxpriv2.h create mode 100644 public/sdk/inc/mfc42/afxres.h create mode 100644 public/sdk/inc/mfc42/afxres.rc create mode 100644 public/sdk/inc/mfc42/afxrich.h create mode 100644 public/sdk/inc/mfc42/afxrich.inl create mode 100644 public/sdk/inc/mfc42/afxsock.h create mode 100644 public/sdk/inc/mfc42/afxsock.inl create mode 100644 public/sdk/inc/mfc42/afxstat_.h create mode 100644 public/sdk/inc/mfc42/afxtempl.h create mode 100644 public/sdk/inc/mfc42/afxtls_.h create mode 100644 public/sdk/inc/mfc42/afxv_cfg.h create mode 100644 public/sdk/inc/mfc42/afxv_cpu.h create mode 100644 public/sdk/inc/mfc42/afxv_dll.h create mode 100644 public/sdk/inc/mfc42/afxv_mac.h create mode 100644 public/sdk/inc/mfc42/afxv_w32.h create mode 100644 public/sdk/inc/mfc42/afxver_.h create mode 100644 public/sdk/inc/mfc42/afxwin.h create mode 100644 public/sdk/inc/mfc42/afxwin1.inl create mode 100644 public/sdk/inc/mfc42/afxwin2.inl create mode 100644 public/sdk/inc/mfc42/daogetrw.h create mode 100644 public/sdk/inc/mfc42/datapath.h create mode 100644 public/sdk/inc/mfc42/dbdaoerr.h create mode 100644 public/sdk/inc/mfc42/dbdaoid.h create mode 100644 public/sdk/inc/mfc42/dbdaoint.h create mode 100644 public/sdk/inc/mfc42/docobj.h create mode 100644 public/sdk/inc/mfc42/idispids.h create mode 100644 public/sdk/inc/mfc42/l.chs/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.chs/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.chs/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.chs/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.chs/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.chs/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.cht/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.deu/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.esp/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.fra/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.ita/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.jpn/afxres.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxctl.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxdb.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxolecl.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxolesv.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxprint.rc create mode 100644 public/sdk/inc/mfc42/l.kor/afxres.rc create mode 100644 public/sdk/inc/mfc42/mfcsamps.mak create mode 100644 public/sdk/inc/mfc42/mssccprj.scc create mode 100644 public/sdk/inc/mfc42/res/3dcheck.bmp create mode 100644 public/sdk/inc/mfc42/res/95check.bmp create mode 100644 public/sdk/inc/mfc42/res/copy4way.cur create mode 100644 public/sdk/inc/mfc42/res/help.cur create mode 100644 public/sdk/inc/mfc42/res/help.rsc create mode 100644 public/sdk/inc/mfc42/res/magnify.cur create mode 100644 public/sdk/inc/mfc42/res/magnify.rsc create mode 100644 public/sdk/inc/mfc42/res/minifwnd.bmp create mode 100644 public/sdk/inc/mfc42/res/move4way.cur create mode 100644 public/sdk/inc/mfc42/res/nodrop.cur create mode 100644 public/sdk/inc/mfc42/res/ntcheck.bmp create mode 100644 public/sdk/inc/mfc42/res/sarrows.cur create mode 100644 public/sdk/inc/mfc42/res/split.rsc create mode 100644 public/sdk/inc/mfc42/res/splith.cur create mode 100644 public/sdk/inc/mfc42/res/splitv.cur create mode 100644 public/sdk/inc/mfc42/res/trck4way.cur create mode 100644 public/sdk/inc/mfc42/res/trcknesw.cur create mode 100644 public/sdk/inc/mfc42/res/trckns.cur create mode 100644 public/sdk/inc/mfc42/res/trcknwse.cur create mode 100644 public/sdk/inc/mfc42/res/trckwe.cur create mode 100644 public/sdk/inc/mfc42/res/truetype.bmp create mode 100644 public/sdk/inc/mfc42/servprov.h create mode 100644 public/sdk/inc/mfc42/sql.h create mode 100644 public/sdk/inc/mfc42/sqlext.h create mode 100644 public/sdk/inc/mfc42/sqltypes.h create mode 100644 public/sdk/inc/mfc42/winres.h create mode 100644 public/sdk/inc/mgmtapi.h create mode 100644 public/sdk/inc/midles.h create mode 100644 public/sdk/inc/minfo.h create mode 100644 public/sdk/inc/mipsalgn.tab create mode 100644 public/sdk/inc/mipsinst.h create mode 100644 public/sdk/inc/mipsxcpt.tab create mode 100644 public/sdk/inc/mmddk.h create mode 100644 public/sdk/inc/mmreg.h create mode 100644 public/sdk/inc/mmsystem.h create mode 100644 public/sdk/inc/moniker.h create mode 100644 public/sdk/inc/monikr.h create mode 100644 public/sdk/inc/msacm.h create mode 100644 public/sdk/inc/msacmdlg.dlg create mode 100644 public/sdk/inc/msacmdlg.h create mode 100644 public/sdk/inc/msacmdrv.h create mode 100644 public/sdk/inc/msaudite.h create mode 100644 public/sdk/inc/msgflt.h create mode 100644 public/sdk/inc/msobjs.h create mode 100644 public/sdk/inc/mspab.h create mode 100644 public/sdk/inc/mspst.h create mode 100644 public/sdk/inc/mstest.inc create mode 100644 public/sdk/inc/mswsock.h create mode 100644 public/sdk/inc/nb30.h create mode 100644 public/sdk/inc/nddeapi.h create mode 100644 public/sdk/inc/nddesec.h create mode 100644 public/sdk/inc/netevent.dbg create mode 100644 public/sdk/inc/netevent.h create mode 100644 public/sdk/inc/newat.h create mode 100644 public/sdk/inc/nminsert.h create mode 100644 public/sdk/inc/npapi.h create mode 100644 public/sdk/inc/nspapi.h create mode 100644 public/sdk/inc/nspapip.h create mode 100644 public/sdk/inc/nt.h create mode 100644 public/sdk/inc/nt_vdd.h create mode 100644 public/sdk/inc/ntalpha.h create mode 100644 public/sdk/inc/ntconfig.h create mode 100644 public/sdk/inc/ntcsrdll.h create mode 100644 public/sdk/inc/ntcsrmsg.h create mode 100644 public/sdk/inc/ntcsrmsg.inc create mode 100644 public/sdk/inc/ntcsrsrv.h create mode 100644 public/sdk/inc/ntdbg.h create mode 100644 public/sdk/inc/ntddaux.h create mode 100644 public/sdk/inc/ntddbeep.h create mode 100644 public/sdk/inc/ntddbrow.h create mode 100644 public/sdk/inc/ntddcdrm.h create mode 100644 public/sdk/inc/ntdddfs.h create mode 100644 public/sdk/inc/ntdddisk.h create mode 100644 public/sdk/inc/ntdddlc.h create mode 100644 public/sdk/inc/ntddfs.h create mode 100644 public/sdk/inc/ntddft.h create mode 100644 public/sdk/inc/ntddjoy.h create mode 100644 public/sdk/inc/ntddkbd.h create mode 100644 public/sdk/inc/ntddmidi.h create mode 100644 public/sdk/inc/ntddmix.h create mode 100644 public/sdk/inc/ntddmodm.h create mode 100644 public/sdk/inc/ntddmou.h create mode 100644 public/sdk/inc/ntddmup.h create mode 100644 public/sdk/inc/ntddndis.h create mode 100644 public/sdk/inc/ntddnetd.h create mode 100644 public/sdk/inc/ntddnfs.h create mode 100644 public/sdk/inc/ntddnpfs.h create mode 100644 public/sdk/inc/ntddnull.h create mode 100644 public/sdk/inc/ntddpar.h create mode 100644 public/sdk/inc/ntddpcm.h create mode 100644 public/sdk/inc/ntddrdr.h create mode 100644 public/sdk/inc/ntddscsi.h create mode 100644 public/sdk/inc/ntddser.h create mode 100644 public/sdk/inc/ntddsjoy.h create mode 100644 public/sdk/inc/ntddsnd.h create mode 100644 public/sdk/inc/ntddstor.h create mode 100644 public/sdk/inc/ntddstrm.h create mode 100644 public/sdk/inc/ntddtape.h create mode 100644 public/sdk/inc/ntddtdi.h create mode 100644 public/sdk/inc/ntddtime.h create mode 100644 public/sdk/inc/ntddtx.h create mode 100644 public/sdk/inc/ntddvdeo.h create mode 100644 public/sdk/inc/ntddvdsk.h create mode 100644 public/sdk/inc/ntddwave.h create mode 100644 public/sdk/inc/ntdef.h create mode 100644 public/sdk/inc/ntdskreg.h create mode 100644 public/sdk/inc/ntelfapi.h create mode 100644 public/sdk/inc/ntexapi.h create mode 100644 public/sdk/inc/ntfsprop.h create mode 100644 public/sdk/inc/nti386.h create mode 100644 public/sdk/inc/ntimage.h create mode 100644 public/sdk/inc/ntimp.idl create mode 100644 public/sdk/inc/ntioapi.h create mode 100644 public/sdk/inc/ntiodump.h create mode 100644 public/sdk/inc/ntiolog.h create mode 100644 public/sdk/inc/ntkdexts.h create mode 100644 public/sdk/inc/ntkeapi.h create mode 100644 public/sdk/inc/ntkxapi.h create mode 100644 public/sdk/inc/ntldr.h create mode 100644 public/sdk/inc/ntlmsp.h create mode 100644 public/sdk/inc/ntlpcapi.h create mode 100644 public/sdk/inc/ntlsa.h create mode 100644 public/sdk/inc/ntlsapi.h create mode 100644 public/sdk/inc/ntmips.h create mode 100644 public/sdk/inc/ntmmapi.h create mode 100644 public/sdk/inc/ntmsv1_0.h create mode 100644 public/sdk/inc/ntnls.h create mode 100644 public/sdk/inc/ntobapi.h create mode 100644 public/sdk/inc/ntpnpapi.h create mode 100644 public/sdk/inc/ntpoapi.h create mode 100644 public/sdk/inc/ntppc.h create mode 100644 public/sdk/inc/ntprfctr.h create mode 100644 public/sdk/inc/ntpsapi.h create mode 100644 public/sdk/inc/ntquery.h create mode 100644 public/sdk/inc/ntregapi.h create mode 100644 public/sdk/inc/ntrpc.idl create mode 100644 public/sdk/inc/ntrtl.h create mode 100644 public/sdk/inc/ntsam.h create mode 100644 public/sdk/inc/ntsdexts.h create mode 100644 public/sdk/inc/ntseapi.h create mode 100644 public/sdk/inc/ntsecapi.h create mode 100644 public/sdk/inc/ntsm.h create mode 100644 public/sdk/inc/ntstatus.dbg create mode 100644 public/sdk/inc/ntstatus.h create mode 100644 public/sdk/inc/nturtl.h create mode 100644 public/sdk/inc/ntverp.h create mode 100644 public/sdk/inc/ntxcapi.h create mode 100644 public/sdk/inc/oadvhr.h create mode 100644 public/sdk/inc/oaidl.h create mode 100644 public/sdk/inc/oaidl.idl create mode 100644 public/sdk/inc/objbase.h create mode 100644 public/sdk/inc/objerror.h create mode 100644 public/sdk/inc/objidl.h create mode 100644 public/sdk/inc/objidl.idl create mode 100644 public/sdk/inc/ocach2.h create mode 100644 public/sdk/inc/ocachc.h create mode 100644 public/sdk/inc/ocache.h create mode 100644 public/sdk/inc/ocidl.h create mode 100644 public/sdk/inc/ocidl.idl create mode 100644 public/sdk/inc/ocntnr.h create mode 100644 public/sdk/inc/ocsite.h create mode 100644 public/sdk/inc/ofsmsg.h create mode 100644 public/sdk/inc/ofsoid.hxx create mode 100644 public/sdk/inc/ole.h create mode 100644 public/sdk/inc/ole2.h create mode 100644 public/sdk/inc/ole2anac.h create mode 100644 public/sdk/inc/ole2dbg.h create mode 100644 public/sdk/inc/ole2ver.h create mode 100644 public/sdk/inc/oleauto.h create mode 100644 public/sdk/inc/olecairo.h create mode 100644 public/sdk/inc/olectl.h create mode 100644 public/sdk/inc/olectlid.h create mode 100644 public/sdk/inc/oledb.h create mode 100644 public/sdk/inc/oledbtyp.h create mode 100644 public/sdk/inc/oledlg.dlg create mode 100644 public/sdk/inc/oledlg.h create mode 100644 public/sdk/inc/oleext.h create mode 100644 public/sdk/inc/oleguid.h create mode 100644 public/sdk/inc/oleidl.h create mode 100644 public/sdk/inc/oleidl.idl create mode 100644 public/sdk/inc/oleobj.h create mode 100644 public/sdk/inc/olewnd.h create mode 100644 public/sdk/inc/olink.h create mode 100644 public/sdk/inc/ossber.h create mode 100644 public/sdk/inc/ossdll.h create mode 100644 public/sdk/inc/ossglobl.h create mode 100644 public/sdk/inc/ossmmgmt.h create mode 100644 public/sdk/inc/ossper.h create mode 100644 public/sdk/inc/osstrace.h create mode 100644 public/sdk/inc/otrack.hxx create mode 100644 public/sdk/inc/pcrt32.h create mode 100644 public/sdk/inc/pdb.h create mode 100644 public/sdk/inc/pdh.h create mode 100644 public/sdk/inc/pdhmsg.h create mode 100644 public/sdk/inc/pdname.h create mode 100644 public/sdk/inc/perfsnap.hxx create mode 100644 public/sdk/inc/pfile.h create mode 100644 public/sdk/inc/plan16.h create mode 100644 public/sdk/inc/plan32.h create mode 100644 public/sdk/inc/poppack.h create mode 100644 public/sdk/inc/port1632.h create mode 100644 public/sdk/inc/posix/dirent.h create mode 100644 public/sdk/inc/posix/errno.h create mode 100644 public/sdk/inc/posix/fcntl.h create mode 100644 public/sdk/inc/posix/grp.h create mode 100644 public/sdk/inc/posix/pwd.h create mode 100644 public/sdk/inc/posix/setjmp.h create mode 100644 public/sdk/inc/posix/signal.h create mode 100644 public/sdk/inc/posix/sys/errno.h create mode 100644 public/sdk/inc/posix/sys/stat.h create mode 100644 public/sdk/inc/posix/sys/times.h create mode 100644 public/sdk/inc/posix/sys/types.h create mode 100644 public/sdk/inc/posix/sys/utsname.h create mode 100644 public/sdk/inc/posix/sys/wait.h create mode 100644 public/sdk/inc/posix/tar.h create mode 100644 public/sdk/inc/posix/termios.h create mode 100644 public/sdk/inc/posix/types.h create mode 100644 public/sdk/inc/posix/unistd.h create mode 100644 public/sdk/inc/posix/utime.h create mode 100644 public/sdk/inc/ppcalign.tab create mode 100644 public/sdk/inc/ppcinst.h create mode 100644 public/sdk/inc/ppcxcpt.tab create mode 100644 public/sdk/inc/prnsetup.dlg create mode 100644 public/sdk/inc/propapi.h create mode 100644 public/sdk/inc/propset.h create mode 100644 public/sdk/inc/propstm.hxx create mode 100644 public/sdk/inc/propvar.h create mode 100644 public/sdk/inc/provapi.h create mode 100644 public/sdk/inc/proxyb.h create mode 100644 public/sdk/inc/prsht.h create mode 100644 public/sdk/inc/prsist.h create mode 100644 public/sdk/inc/psapi.h create mode 100644 public/sdk/inc/psfbuf.h create mode 100644 public/sdk/inc/pshpack1.h create mode 100644 public/sdk/inc/pshpack2.h create mode 100644 public/sdk/inc/pshpack4.h create mode 100644 public/sdk/inc/pshpack8.h create mode 100644 public/sdk/inc/pstorg.h create mode 100644 public/sdk/inc/pstrm.h create mode 100644 public/sdk/inc/ptypes16.h create mode 100644 public/sdk/inc/ptypes32.h create mode 100644 public/sdk/inc/pwin16.h create mode 100644 public/sdk/inc/pwin32.h create mode 100644 public/sdk/inc/query.h create mode 100644 public/sdk/inc/ras.h create mode 100644 public/sdk/inc/rasdlg.h create mode 100644 public/sdk/inc/raserror.h create mode 100644 public/sdk/inc/rassapi.h create mode 100644 public/sdk/inc/rasshost.h create mode 100644 public/sdk/inc/rchanb.h create mode 100644 public/sdk/inc/recguids.h create mode 100644 public/sdk/inc/reconcil.h create mode 100644 public/sdk/inc/regapix.h create mode 100644 public/sdk/inc/regstr.h create mode 100644 public/sdk/inc/replapi.h create mode 100644 public/sdk/inc/resource.hxx create mode 100644 public/sdk/inc/restrict.hxx create mode 100644 public/sdk/inc/richedit.h create mode 100644 public/sdk/inc/richole.h create mode 100644 public/sdk/inc/rot.h create mode 100644 public/sdk/inc/rpc.h create mode 100644 public/sdk/inc/rpcdce.h create mode 100644 public/sdk/inc/rpcdcep.h create mode 100644 public/sdk/inc/rpcndr.h create mode 100644 public/sdk/inc/rpcnsi.h create mode 100644 public/sdk/inc/rpcnsip.h create mode 100644 public/sdk/inc/rpcnterr.h create mode 100644 public/sdk/inc/rpcproxy.h create mode 100644 public/sdk/inc/rpcwdt.h create mode 100644 public/sdk/inc/rtstg.h create mode 100644 public/sdk/inc/runobj.h create mode 100644 public/sdk/inc/safepnt.hxx create mode 100644 public/sdk/inc/scode.h create mode 100644 public/sdk/inc/scrnsave.h create mode 100644 public/sdk/inc/secdes.hxx create mode 100644 public/sdk/inc/secext.h create mode 100644 public/sdk/inc/secobjs.h create mode 100644 public/sdk/inc/secpkg.h create mode 100644 public/sdk/inc/secpri.h create mode 100644 public/sdk/inc/security.h create mode 100644 public/sdk/inc/sedapi.h create mode 100644 public/sdk/inc/sem.hxx create mode 100644 public/sdk/inc/sem32.hxx create mode 100644 public/sdk/inc/serialz.h create mode 100644 public/sdk/inc/setupapi.h create mode 100644 public/sdk/inc/setupbat.h create mode 100644 public/sdk/inc/setupxrc.h create mode 100644 public/sdk/inc/shellapi.h create mode 100644 public/sdk/inc/shlguid.h create mode 100644 public/sdk/inc/shlobj.h create mode 100644 public/sdk/inc/shlwapi.h create mode 100644 public/sdk/inc/sifmt.h create mode 100644 public/sdk/inc/sift.hxx create mode 100644 public/sdk/inc/simbad.h create mode 100644 public/sdk/inc/snmp.h create mode 100644 public/sdk/inc/spseal.h create mode 100644 public/sdk/inc/srvhdl.h create mode 100644 public/sdk/inc/srvhdl.idl create mode 100644 public/sdk/inc/sslsp.h create mode 100644 public/sdk/inc/sspi.h create mode 100644 public/sdk/inc/sstream.hxx create mode 100644 public/sdk/inc/stdclass.hxx create mode 100644 public/sdk/inc/stdobj.hxx create mode 100644 public/sdk/inc/stgint.h create mode 100644 public/sdk/inc/stgprop.h create mode 100644 public/sdk/inc/stgvar.hxx create mode 100644 public/sdk/inc/stgvara.hxx create mode 100644 public/sdk/inc/stgvarb.hxx create mode 100644 public/sdk/inc/storag.h create mode 100644 public/sdk/inc/storage.h create mode 100644 public/sdk/inc/storext.h create mode 100644 public/sdk/inc/storext.idl create mode 100644 public/sdk/inc/stream.h create mode 100644 public/sdk/inc/stubb.h create mode 100644 public/sdk/inc/subauth.h create mode 100644 public/sdk/inc/svcguid.h create mode 100644 public/sdk/inc/sysmgmt.h create mode 100644 public/sdk/inc/syssetup.h create mode 100644 public/sdk/inc/tapi.h create mode 100644 public/sdk/inc/textserv.h create mode 100644 public/sdk/inc/tnef.h create mode 100644 public/sdk/inc/tom.h create mode 100644 public/sdk/inc/transact.h create mode 100644 public/sdk/inc/tspi.h create mode 100644 public/sdk/inc/tuple.h create mode 100644 public/sdk/inc/unknwn.h create mode 100644 public/sdk/inc/unknwn.idl create mode 100644 public/sdk/inc/urlmon.h create mode 100644 public/sdk/inc/userenv.h create mode 100644 public/sdk/inc/variant.h create mode 100644 public/sdk/inc/vddsvc.h create mode 100644 public/sdk/inc/vdmdbg.h create mode 100644 public/sdk/inc/verinfo.h create mode 100644 public/sdk/inc/vfw.h create mode 100644 public/sdk/inc/vquery.hxx create mode 100644 public/sdk/inc/vwobj.h create mode 100644 public/sdk/inc/vwobj2.h create mode 100644 public/sdk/inc/warning.h create mode 100644 public/sdk/inc/wdbgexts.h create mode 100644 public/sdk/inc/wfext.h create mode 100644 public/sdk/inc/winbase.h create mode 100644 public/sdk/inc/wincon.h create mode 100644 public/sdk/inc/wincrypt.h create mode 100644 public/sdk/inc/windbgkd.h create mode 100644 public/sdk/inc/windef.h create mode 100644 public/sdk/inc/windows.h create mode 100644 public/sdk/inc/windowsx.h create mode 100644 public/sdk/inc/windowsx.h16 create mode 100644 public/sdk/inc/winerror.dbg create mode 100644 public/sdk/inc/winerror.h create mode 100644 public/sdk/inc/wingdi.h create mode 100644 public/sdk/inc/wininet.h create mode 100644 public/sdk/inc/winioctl.h create mode 100644 public/sdk/inc/winmm.h create mode 100644 public/sdk/inc/winnetwk.h create mode 100644 public/sdk/inc/winnls.h create mode 100644 public/sdk/inc/winnls32.h create mode 100644 public/sdk/inc/winnt.h create mode 100644 public/sdk/inc/winntos2.sed create mode 100644 public/sdk/inc/winperf.h create mode 100644 public/sdk/inc/winreg.h create mode 100644 public/sdk/inc/winsock.h create mode 100644 public/sdk/inc/winsock2.h create mode 100644 public/sdk/inc/winspool.h create mode 100644 public/sdk/inc/winsvc.h create mode 100644 public/sdk/inc/wintrust.h create mode 100644 public/sdk/inc/winuser.h create mode 100644 public/sdk/inc/winver.h create mode 100644 public/sdk/inc/winwlx.h create mode 100644 public/sdk/inc/wnapidec.inc create mode 100644 public/sdk/inc/wownt16.h create mode 100644 public/sdk/inc/wownt32.h create mode 100644 public/sdk/inc/ws2spi.h create mode 100644 public/sdk/inc/ws2tcpip.h create mode 100644 public/sdk/inc/wshisotp.h create mode 100644 public/sdk/inc/wsipx.h create mode 100644 public/sdk/inc/wsnetbs.h create mode 100644 public/sdk/inc/wsnwlink.h create mode 100644 public/sdk/inc/wsvns.h create mode 100644 public/sdk/inc/wtypes.h create mode 100644 public/sdk/inc/wtypes.idl create mode 100644 public/sdk/inc/zext.h create mode 100644 public/sdk/lib/alpha/usa/baseaddr.txt create mode 100644 public/sdk/lib/coffbase.txt create mode 100644 public/sdk/lib/i386/crtdll.pdb create mode 100644 public/sdk/lib/i386/crtdlld.pdb create mode 100644 public/sdk/lib/i386/libc.pdb create mode 100644 public/sdk/lib/i386/libcd.pdb create mode 100644 public/sdk/lib/i386/libcmt.pdb create mode 100644 public/sdk/lib/i386/libcmtd.pdb create mode 100644 public/sdk/lib/i386/mfcs40.pdb create mode 100644 public/sdk/lib/i386/mfcs40d.pdb create mode 100644 public/sdk/lib/i386/mfcs40u.pdb create mode 100644 public/sdk/lib/i386/mfcs40ud.pdb create mode 100644 public/sdk/lib/i386/mfcs42.pdb create mode 100644 public/sdk/lib/i386/mfcs42d.pdb create mode 100644 public/sdk/lib/i386/mfcs42u.pdb create mode 100644 public/sdk/lib/i386/mfcs42ud.pdb create mode 100644 public/sdk/lib/i386/msvcrt.pdb create mode 100644 public/sdk/lib/i386/msvcrtd.pdb create mode 100644 public/sdk/lib/i386/nafxcw.pdb create mode 100644 public/sdk/lib/i386/nafxcwd.pdb create mode 100644 public/sdk/lib/i386/uafxcw.pdb create mode 100644 public/sdk/lib/i386/uafxcwd.pdb create mode 100644 public/sdk/lib/i386/usa/baseaddr.txt create mode 100644 public/sdk/lib/mips/usa/baseaddr.txt create mode 100644 public/sdk/lib/ossinfo create mode 100644 public/sdk/lib/placefil.bak create mode 100644 public/sdk/lib/placefil.new create mode 100644 public/sdk/lib/placefil.txt create mode 100644 public/sdk/lib/ppc/int64.lib.vc create mode 100644 public/sdk/lib/ppc/int64.mcl create mode 100644 public/sdk/lib/ppc/usa/baseaddr.txt create mode 100644 public/sdk/lib/system.mdb create mode 100644 public/sdk/rpc16/ct/errdb.h create mode 100644 public/sdk/rpc16/ct/errors.hxx create mode 100644 public/sdk/rpc16/dos/dll/rpc16c1.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16c1.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16c3.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16c3.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16c4.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16c4.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16c5.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16c5.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16c6.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16c6.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16dg3.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16dg3.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpc16dg6.map create mode 100644 public/sdk/rpc16/dos/dll/rpc16dg6.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpcns.map create mode 100644 public/sdk/rpc16/dos/dll/rpcns.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpcnslm.map create mode 100644 public/sdk/rpc16/dos/dll/rpcnslm.rpc create mode 100644 public/sdk/rpc16/dos/dll/rpcnsmgm.map create mode 100644 public/sdk/rpc16/dos/dll/rpcnsmgm.rpc create mode 100644 public/sdk/rpc16/dos/dll/security.map create mode 100644 public/sdk/rpc16/dos/dll/security.rpc create mode 100644 public/sdk/rpc16/dos/inc/midles.h create mode 100644 public/sdk/rpc16/dos/inc/rpc.h create mode 100644 public/sdk/rpc16/dos/inc/rpcdce.h create mode 100644 public/sdk/rpc16/dos/inc/rpcdcep.h create mode 100644 public/sdk/rpc16/dos/inc/rpcerr.h create mode 100644 public/sdk/rpc16/dos/inc/rpcndr.h create mode 100644 public/sdk/rpc16/dos/inc/rpcnsi.h create mode 100644 public/sdk/rpc16/dos/inc/rpcnsip.h create mode 100644 public/sdk/rpc16/dos/inc/rpcx86.h create mode 100644 public/sdk/rpc16/mac/inc/midles.h create mode 100644 public/sdk/rpc16/mac/inc/rpc.h create mode 100644 public/sdk/rpc16/mac/inc/rpcdce.h create mode 100644 public/sdk/rpc16/mac/inc/rpcdcep.h create mode 100644 public/sdk/rpc16/mac/inc/rpcerr.h create mode 100644 public/sdk/rpc16/mac/inc/rpcmac.h create mode 100644 public/sdk/rpc16/mac/inc/rpcndr.h create mode 100644 public/sdk/rpc16/mac/inc/rpcnsi.h create mode 100644 public/sdk/rpc16/mac/inc/rpcnsip.h create mode 100644 public/sdk/rpc16/mppc/inc/midles.h create mode 100644 public/sdk/rpc16/mppc/inc/rpc.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcdce.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcdcep.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcerr.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcmac.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcndr.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcnsi.h create mode 100644 public/sdk/rpc16/mppc/inc/rpcnsip.h create mode 100644 public/sdk/rpc16/sdk/dnetapi.dl_ create mode 100644 public/sdk/rpc16/sdk/drpc.h_ create mode 100644 public/sdk/rpc16/sdk/drpc.li_ create mode 100644 public/sdk/rpc16/sdk/drpcndr.li_ create mode 100644 public/sdk/rpc16/sdk/midles.h_ create mode 100644 public/sdk/rpc16/sdk/mrpc.h_ create mode 100644 public/sdk/rpc16/sdk/mrpc.li_ create mode 100644 public/sdk/rpc16/sdk/mscuistf.dl_ create mode 100644 public/sdk/rpc16/sdk/msdetect.inc create mode 100644 public/sdk/rpc16/sdk/readme.txt create mode 100644 public/sdk/rpc16/sdk/rpcdce.h_ create mode 100644 public/sdk/rpc16/sdk/rpcdcep.h_ create mode 100644 public/sdk/rpc16/sdk/rpcerr.h_ create mode 100644 public/sdk/rpc16/sdk/rpcmac.h_ create mode 100644 public/sdk/rpc16/sdk/rpcndr.h_ create mode 100644 public/sdk/rpc16/sdk/rpcnsi.h_ create mode 100644 public/sdk/rpc16/sdk/rpcnsip.h_ create mode 100644 public/sdk/rpc16/sdk/rpcsdk.in_ create mode 100644 public/sdk/rpc16/sdk/rpcsdk.mst create mode 100644 public/sdk/rpc16/sdk/rpcx86.h_ create mode 100644 public/sdk/rpc16/sdk/setup.lst create mode 100644 public/sdk/rpc16/sdk/setupapi.inc create mode 100644 public/sdk/rpc16/sdk/setuprun.lst create mode 100644 public/sdk/rpc16/sdk/uuidgen.ex_ create mode 100644 public/sdk/rpc16/sdk/wrpc.h_ create mode 100644 public/sdk/rpc16/sdk/wrpc.li_ create mode 100644 public/sdk/rpc16/sdk/wrpcndr.li_ create mode 100644 public/sdk/rpc16/win/dll/rpc16c1.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c1.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16c3.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c3.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16c4.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c4.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16c5.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c5.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16c6.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c6.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16c8.map create mode 100644 public/sdk/rpc16/win/dll/rpc16c8.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16dg3.map create mode 100644 public/sdk/rpc16/win/dll/rpc16dg3.sym create mode 100644 public/sdk/rpc16/win/dll/rpc16dg6.map create mode 100644 public/sdk/rpc16/win/dll/rpc16dg6.sym create mode 100644 public/sdk/rpc16/win/dll/rpcns1.map create mode 100644 public/sdk/rpc16/win/dll/rpcns1.sym create mode 100644 public/sdk/rpc16/win/dll/rpcrt1.map create mode 100644 public/sdk/rpc16/win/dll/rpcrt1.sym create mode 100644 public/sdk/rpc16/win/dll/security.map create mode 100644 public/sdk/rpc16/win/dll/security.sym create mode 100644 public/sdk/rpc16/win/inc/midles.h create mode 100644 public/sdk/rpc16/win/inc/rpc.h create mode 100644 public/sdk/rpc16/win/inc/rpcdce.h create mode 100644 public/sdk/rpc16/win/inc/rpcdcep.h create mode 100644 public/sdk/rpc16/win/inc/rpcerr.h create mode 100644 public/sdk/rpc16/win/inc/rpcndr.h create mode 100644 public/sdk/rpc16/win/inc/rpcnsi.h create mode 100644 public/sdk/rpc16/win/inc/rpcnsip.h create mode 100644 public/sdk/rpc16/win/inc/rpcx86.h create mode 100644 public/sdk/rpc16/win/lib/winmain.def create mode 100644 public/sdk/rpc16/win/lib/winmain.res (limited to 'public/sdk') diff --git a/public/sdk/bin/alpha/ddhelp.pdb b/public/sdk/bin/alpha/ddhelp.pdb new file mode 100644 index 000000000..3d53b1178 Binary files /dev/null and b/public/sdk/bin/alpha/ddhelp.pdb 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 Binary files /dev/null and b/public/sdk/bin/ole2view.hlp differ diff --git a/public/sdk/bin/oletools.hlp b/public/sdk/bin/oletools.hlp new file mode 100644 index 000000000..3023d6efc Binary files /dev/null and b/public/sdk/bin/oletools.hlp differ diff --git a/public/sdk/bin/shed.hlp b/public/sdk/bin/shed.hlp new file mode 100644 index 000000000..21ecfdfa5 Binary files /dev/null and b/public/sdk/bin/shed.hlp 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 +#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 +#include + +#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 + 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 + 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 +#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 + + +extern int ossFreeOpenTypeEncoding; + +#ifdef __BORLANDC__ +#undef DBL_MAX +#include +#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 + 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 + +#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, + 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, + + index = cCount + rept cCount + x = 0 + irp arg, + 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: +endif + +PUBLICP macro Func,N + + ifb + 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 + IFNDEF Func&@0 + extrn Func&@0:NEAR + ENDIF + else + ifb + ifb + EXTRNP2 Func,%(N*4) + else + EXTRNTHUNK Func,%(N*4) + endif + else + cFCall&@&Func equ (N*4) + ifb + 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 + 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 + cByte&Func equ 0 + Name equ + else + cByte&Func equ N + Name equ + 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 + stdPROC Func,0, + else + stdPROC Func,N, + endif +endm + +ProcNameF macro Name,Func,N,M + + cByte&Func equ M + cFCall&Func equ N + Name equ + +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 + stdPROCF &@&Func,0, + else + stdPROCF &@&Func,N, + 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 ,Bytes + Bytes = Bytes*4 + + stdCallCall Func,%(Bytes) +endm + +fstCall macro Func,ArgList + Local Bytes + + RevPush ,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 ,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 + + +#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 + 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 + +// +// 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 +#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 + +#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 +#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 /* 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 +#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 + 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 /* 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 + +#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 + +#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 sequences translated to on read()'s, +** and sequences translated to 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 + +#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 + +#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 + +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 // Define ios. + +#include // Define streambuf. + +#include // Define istream. + +#include // 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 + +#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 + +#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 /* 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 + +#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 + +#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 +#include + +#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 // 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 _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 + +#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 + + +#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 + + +#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 + + +#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 + + +#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 */ + +#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 + 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 + +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 +#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 + 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 + 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 +#include +#include + + + +//+--------------------------------------------------------------------------- +// +// 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 +#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 +#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 + +//---------------------------------------------------------------------------- +// 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 +#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__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 +#include +#include + +#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 + +//** 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 + +#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 + + +/*** 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 + +#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 + +//** 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 + +#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 + + +/*** 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 + +#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 + +// ------------------------------------------------------------ +// 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 + 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 + + +//+--------------------------------------------------------------------------- +// +// 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 +#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 + 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 + 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 +//+---------------------------------------------------------------------------- +// +// 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 "" +// +// 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 "" +// +// 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 : or +// \ +// [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 +#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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 /* 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 + 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 +# include +#else // !KERNEL +# include +# include +# include +# include +#endif + +#include + +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 +//# 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 +# define exAssert( x ) assert( (x) ) + +# include +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 +# endif // !KERNEL +#else // !WIN32 +# include +#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 + + +// +// 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 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 s pressed + LINE y; // - cursor line + COL x; // - cursor column +} NULLARGTYPE; + +typedef struct lineargType { // line argument specified + int cArg; // - count of 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 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 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 + 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 + + + + +// +// 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 +#include +#include +#include // 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 + +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 +#include +#include + +#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 + +#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 + +#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 + 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 + +#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 + +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 + 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. +#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. 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 + 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 + 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 + 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 + 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 + 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 +#include +#include +#include + +#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 + +#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 // LAN Manager common definitions +#include // LAN Manager network error definitions + +#include // Access, Domain, Group and User classes +#include // Alerter +#include // Character Device and Handle classes +#include // Connection, File, Session and Share classes +#include // Message class +#include // Remote Utility class +#include // Replicator class +#include // Server class +#include // Service class +#include // Use class +#include // Workstation class +#include // NetApiBuffer class +#include // NetErrorLog class +#include // NetConfig class +#include // NetStats class +#include // 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 // 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 and 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 + + + +/*** 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 // 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 and 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 + +// +// 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_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 // 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 // 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 // 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 + 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 +.errb + +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 + 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 +.errb + +ifndef NT_UP +if DBG + +EXTRNP Kii386SpinOnSpinLock,2 + flag = 0 + +ifb + flag = flag + 1 +endif + +ifnb + flag = flag + 2 +endif + +ifb + flag = flag + 4 +endif + stdCall Kii386SpinOnSpinLock, + 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 +ifndef NT_UP +if DBG +ifb +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, ; 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>, + 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>, + 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>, + 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>, + 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 +#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 +#endif + +#ifndef _OLEERROR_H_ +#include +#endif +#ifndef _OBJBASE_H_ +#include +#endif +#endif + +#if defined (WIN16) || defined (DOS) || defined (DOS16) +#ifndef _COMPOBJ_H_ +#include +#endif +#endif + +#ifndef _INC_STDDEF +#include +#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 +#include +#include +#include +#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 +#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 +#endif +#ifndef MAPICODE_H +#include +#endif +#ifndef MAPIGUID_H +#include +#endif +#ifndef MAPITAGS_H +#include +#endif + +#if defined (WIN16) || defined (DOS) || defined (DOS16) +#include +#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 +#endif + +#ifdef WIN16 +#include +#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 +#endif +#include +#include + + +#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 /* 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 +#endif +#ifndef MAPICODE_H +#include +#endif +#ifndef MAPIGUID_H +#include +#endif +#ifndef MAPITAGS_H +#include +#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 + 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 window Play in normal window +** play fullscreen Play in 320x240 full-screen mode +** play 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 +#include + +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 +#include + +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 // 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 +#include +#include +#include + +#ifdef _AFX_OLD_EXCEPTIONS +// use setjmp and helper functions instead of C++ keywords +#pragma warning(disable: 4611) +#include +#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 + #ifndef __AFXSTATE_H__ + #include // for AFX_APP_STATE and AFX_THREAD_STATE + #endif +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFX_INLINE inline +#include +#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 +#endif +#ifndef _INC_COMMCTRL + #include +#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 +#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 +#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 // for AFX_APP_STATE and AFX_THREAD_STATE +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFXCOLL_INLINE inline +#include +#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 +#endif + +// include standard SQL/ODBC "C" APIs +#include // core +#include // 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 +#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 +#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 +#endif + +// include necessary OLE 2.0 headers +#ifndef _UNICODE + #define OLE2ANSI +#endif +#include +#include +#include +#include + +#include // 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 +#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 +#endif + +#include // 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 +#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 +#endif +#ifndef __AFXDLGS_H__ + #include +#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 +#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 +#endif + +#ifndef __AFXDLGS_H__ + #include +#endif + +// include OLE 2.0 dialog/helper APIs +#include + +#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 +#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 +#endif + +#ifndef __AFXDISP_H__ + #include +#endif + +// include OLE 2.0 Compound Document headers +#ifndef _UNICODE + #define OLE2ANSI +#endif +#include + +#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 +#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 +#endif + +#ifndef _INC_DLGS +#include +#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 +#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 +#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 Binary files /dev/null and b/public/sdk/inc/mfc30/afxres.aps 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 +#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 +#endif + +#include + +#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 +#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 +#include + +#ifndef __AFXPLEX_H__ + #include +#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 +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 +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 +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 +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 +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 +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 + +template +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 inline functions + +template +inline int CArray::GetSize() const + { return m_nSize; } +template +inline int CArray::GetUpperBound() const + { return m_nSize-1; } +template +inline void CArray::RemoveAll() + { SetSize(0, -1); } +template +inline TYPE CArray::GetAt(int nIndex) const + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline void CArray::SetAt(int nIndex, ARG_TYPE newElement) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + m_pData[nIndex] = newElement; } +template +inline TYPE& CArray::ElementAt(int nIndex) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline int CArray::Add(ARG_TYPE newElement) + { int nIndex = m_nSize; + SetAtGrow(nIndex, newElement); + return nIndex; } +template +inline TYPE CArray::operator[](int nIndex) const + { return GetAt(nIndex); } +template +inline TYPE& CArray::operator[](int nIndex) + { return ElementAt(nIndex); } + +///////////////////////////////////////////////////////////////////////////// +// CArray out-of-line functions + +template +CArray::CArray() +{ + m_pData = NULL; + m_nSize = m_nMaxSize = m_nGrowBy = 0; +} + +template +CArray::~CArray() +{ + ASSERT_VALID(this); + + if (m_pData != NULL) + { + DestructElements(m_pData, m_nSize); + delete[] (BYTE*)m_pData; + } +} + +template +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 + +template +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 inline functions + +template +inline int CList::GetCount() const + { return m_nCount; } +template +inline BOOL CList::IsEmpty() const + { return m_nCount == 0; } +template +inline TYPE& CList::GetHead() + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE CList::GetHead() const + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE& CList::GetTail() + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline TYPE CList::GetTail() const + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline POSITION CList::GetHeadPosition() const + { return (POSITION) m_pNodeHead; } +template +inline POSITION CList::GetTailPosition() const + { return (POSITION) m_pNodeTail; } +template +inline TYPE& CList::GetNext(POSITION& rPosition) // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE CList::GetNext(POSITION& rPosition) const // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE& CList::GetPrev(POSITION& rPosition) // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE CList::GetPrev(POSITION& rPosition) const // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE& CList::GetAt(POSITION position) + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline TYPE CList::GetAt(POSITION position) const + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline void CList::SetAt(POSITION pos, ARG_TYPE newElement) + { CNode* pNode = (CNode*) pos; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + pNode->data = newElement; } + +template +CList::CList(int nBlockSize) +{ + ASSERT(nBlockSize > 0); + + m_nCount = 0; + m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL; + m_pBlocks = NULL; + m_nBlockSize = nBlockSize; +} + +template +void CList::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 +CList::~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 +CList::CNode* +CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +TYPE CList::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 +TYPE CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +void CList::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 + +template +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 inline functions + +template +inline int CMap::GetCount() const + { return m_nCount; } +template +inline BOOL CMap::IsEmpty() const + { return m_nCount == 0; } +template +inline void CMap::SetAt(ARG_KEY key, ARG_VALUE newValue) + { (*this)[key] = newValue; } +template +inline POSITION CMap::GetStartPosition() const + { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; } +template +inline UINT CMap::GetHashTableSize() const + { return m_nHashTableSize; } + +///////////////////////////////////////////////////////////////////////////// +// CMap out-of-line functions + +template +CMap::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 +void CMap::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 +void CMap::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 +CMap::~CMap() +{ + RemoveAll(); + ASSERT(m_nCount == 0); +} + +template +CMap::CAssoc* +CMap::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 +void CMap::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 +CMap::CAssoc* +CMap::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 +BOOL CMap::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 +VALUE& CMap::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 +BOOL CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 + +template +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 + +template +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 + +template +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 +#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 + +#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 + #ifdef _REDEF_WINVER + #undef _REDEF_WINVER + #undef WINVER + #define WINVER 0x030A + #endif +#endif + +#ifndef EXPORT +#define EXPORT +#endif + +#include // used for ANSI v.s. UNICODE abstraction +#ifdef _MBCS +#include +#include +#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 + +// Include any non-Intel platform specific items +#ifndef _X86_ + #include +#endif + +// Include any non-Windows OS-specific items +#ifdef _MAC + #include +#endif + +#ifdef _CUSTOM +// Put any custom configuration items in afxv_cfg.h + #include +#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 +#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 +#endif + +// Note: WINDOWS.H already included from AFXV_W32.H + +#include + +#ifndef __AFXRES_H__ + #include // standard resource IDs +#endif + +#ifndef __AFXCOLL_H__ + #include // 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 + +///////////////////////////////////////////////////////////////////////////// +// 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 // 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 or, OnGet + AFX_PMSG pfnSet; // special member for OnSet + 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 +#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 +#include +#endif + +#undef AFX_DATA +#define AFX_DATA + +///////////////////////////////////////////////////////////////////////////// + +#else //RC_INVOKED +#include // 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 + +#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 +#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 + + +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 +#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 +#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 +#endif + +#ifndef _INC_DLGS +#include +#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 +#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 +#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 Binary files /dev/null and b/public/sdk/inc/mfc30/l.deu/afxres.aps 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 +#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 +#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 +#endif + +#ifndef _INC_DLGS +#include +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS +#include +#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 +#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 +#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 "-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·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 Binary files /dev/null and b/public/sdk/inc/mfc30/l.jpn/afxres.aps 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 +#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 +#endif +#ifndef _INC_SHELLAPI +#include +#endif +#ifndef _INC_COMMDLG +#include +#endif +#ifndef _OLE2_H_ +#include +#endif +#include +#include // common dialog IDs +//#include // OLE common dialog IDs +#include + + +// 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 + +#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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/copy4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/help.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/help.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/magnify.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/magnify.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/minifwnd.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/move4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/nodrop.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscr.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscr_l.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscr_ld.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscr_r.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscr_rd.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/psscroll.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/sarrows.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/split.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/splith.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/splitv.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/trck4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/trcknesw.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/trckns.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/trcknwse.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc30/res/trckwe.cur 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 // 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 +#endif +#ifndef _INC_STDIO + #include +#endif +#ifndef _INC_STDLIB + #include +#endif +#ifndef _INC_TIME + #include +#endif +#ifndef _INC_LIMITS + #include +#endif +#ifndef _INC_STDDEF + #include +#endif +#ifndef _INC_STDARG + #include +#endif + +#ifndef _AFX_NO_DEBUG_CRT +#ifndef _INC_CRTDBG + #include +#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 +#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 + #ifndef __AFXSTATE_H__ + #include // for _AFX_APP_STATE and _AFX_THREAD_STATE + #endif +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFX_INLINE inline +#include +#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 +#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 +#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 + #endif + #ifdef __AFXOLE_H__ // only include richole if OLE support is included + #ifndef _RICHOLE_ + #include + #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 +#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 +#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 // for MFC private state structures +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFXCOLL_INLINE inline +#include +#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 +#endif + +// include OLE Control header +#ifndef _OLECTL_H_ + #include +#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 +#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 +#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 +#endif + +#ifndef __AFXCMN_H__ + #include +#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 +#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 // Must include this before dao headers +#endif +#ifndef _DBDAOINT_H_ + #include +#endif +#ifndef _DAOGETRW_H_ + #include +#endif +#ifndef _DBDAOID_H_ + #include +#endif +#ifndef _DBDAOERR_H_ + #include +#endif + +#ifndef __AFXDB__H__ + #include // 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 +#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 +#endif + +#ifndef __AFXDB__H__ + #include // shared header DAO database classes +#endif + +// include standard SQL/ODBC "C" APIs +#ifndef __SQL + #include // core +#endif +#ifndef __SQLEXT + #include // 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 +#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 +#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 +#endif + +// include necessary OLE headers +#ifndef _OBJBASE_H_ + #include +#endif +#ifndef _OLEAUTO_H_ + #include +#endif +#ifndef _OLECTL_H_ + #include +#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 +#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 +#endif + +#ifndef _INC_COMMDLG + #include // 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 + #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 +#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 m_classList; +#ifndef _AFX_NO_OLE_SUPPORT + CTypedSimpleList 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 +#endif +#ifndef __AFXDLGS_H__ + #include +#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 +#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 +#include + +#ifndef _INC_STDLIB + #include +#endif +#ifndef _INC_TCHAR + #include +#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 + +#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 +#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 +#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 "HTTP Error %d" + AFX_IDS_HTTP_NO_TEXT "

HTTP Error %d: No message available

\r\n" + AFX_IDS_HTTP_BAD_REQUEST "

BAD REQUEST

Your client sent a request that this server didn't understand.
Request: %s\r\n" + AFX_IDS_HTTP_AUTH_REQUIRED "

AUTH REQUIRED

Browser not authentication-capable or authentication failed.\r\n" + AFX_IDS_HTTP_FORBIDDEN "

FORBIDDEN

Your client does not have permission to get this URL from the server.\r\n" + AFX_IDS_HTTP_NOT_FOUND "

NOT FOUND

The requested URL was not found on this server.\r\n" + AFX_IDS_HTTP_SERVER_ERROR "

SERVER ERROR

The server encountered an internal error or misconfiguration and was unable to complete your request.\r\n" + AFX_IDS_HTTP_NOT_IMPLEMENTED "

NOT IMPLEMENTED

The server is unable to perform the method %s at this time.\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 +#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 +#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 +#endif + +#ifndef __AFXDLGS_H__ + #include +#endif + +#ifdef _MAC + // include OLE dialog/helper APIs + #include +#else + // include OLE dialog/helper APIs + #ifndef _OLEDLG_H_ + #include + #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 +#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 +#endif + +#ifndef __AFXDISP_H__ + #include +#endif + +// include OLE Compound Document headers +#ifndef _OLE2_H_ + #include +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#endif + +#ifndef _INC_MALLOC + #include +#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 +#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 +#endif +#ifndef __AFXDLGS_H__ + #include +#endif +#ifndef __AFXOLE_H__ + #include +#endif +#ifndef _RICHEDIT_ + #include +#endif +#ifndef _RICHOLE_ + #include + #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 +#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 +#endif + +#ifndef _WINSOCKAPI_ + #include +#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 +#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 +#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 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 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 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 m_classList; + + // OLE object factories +#ifndef _AFX_NO_OLE_SUPPORT +#ifdef _AFXDLL + COleObjectFactory* m_pFactoryInit; +#endif + CTypedSimpleList 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 +#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 +#endif + +template +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 +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 +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 +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 +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 +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 +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 + +template +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 inline functions + +template +inline int CArray::GetSize() const + { return m_nSize; } +template +inline int CArray::GetUpperBound() const + { return m_nSize-1; } +template +inline void CArray::RemoveAll() + { SetSize(0, -1); } +template +inline TYPE CArray::GetAt(int nIndex) const + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline void CArray::SetAt(int nIndex, ARG_TYPE newElement) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + m_pData[nIndex] = newElement; } +template +inline TYPE& CArray::ElementAt(int nIndex) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline const TYPE* CArray::GetData() const + { return (const TYPE*)m_pData; } +template +inline TYPE* CArray::GetData() + { return (TYPE*)m_pData; } +template +inline int CArray::Add(ARG_TYPE newElement) + { int nIndex = m_nSize; + SetAtGrow(nIndex, newElement); + return nIndex; } +template +inline TYPE CArray::operator[](int nIndex) const + { return GetAt(nIndex); } +template +inline TYPE& CArray::operator[](int nIndex) + { return ElementAt(nIndex); } + +///////////////////////////////////////////////////////////////////////////// +// CArray out-of-line functions + +template +CArray::CArray() +{ + m_pData = NULL; + m_nSize = m_nMaxSize = m_nGrowBy = 0; +} + +template +CArray::~CArray() +{ + ASSERT_VALID(this); + + if (m_pData != NULL) + { + DestructElements(m_pData, m_nSize); + delete[] (BYTE*)m_pData; + } +} + +template +void CArray::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 +int CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 + +template +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 inline functions + +template +inline int CList::GetCount() const + { return m_nCount; } +template +inline BOOL CList::IsEmpty() const + { return m_nCount == 0; } +template +inline TYPE& CList::GetHead() + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE CList::GetHead() const + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE& CList::GetTail() + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline TYPE CList::GetTail() const + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline POSITION CList::GetHeadPosition() const + { return (POSITION) m_pNodeHead; } +template +inline POSITION CList::GetTailPosition() const + { return (POSITION) m_pNodeTail; } +template +inline TYPE& CList::GetNext(POSITION& rPosition) // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE CList::GetNext(POSITION& rPosition) const // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE& CList::GetPrev(POSITION& rPosition) // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE CList::GetPrev(POSITION& rPosition) const // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE& CList::GetAt(POSITION position) + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline TYPE CList::GetAt(POSITION position) const + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline void CList::SetAt(POSITION pos, ARG_TYPE newElement) + { CNode* pNode = (CNode*) pos; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + pNode->data = newElement; } + +template +CList::CList(int nBlockSize) +{ + ASSERT(nBlockSize > 0); + + m_nCount = 0; + m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL; + m_pBlocks = NULL; + m_nBlockSize = nBlockSize; +} + +template +void CList::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 +CList::~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 +CList::CNode* +CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +TYPE CList::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 +TYPE CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +void CList::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 + +template +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 inline functions + +template +inline int CMap::GetCount() const + { return m_nCount; } +template +inline BOOL CMap::IsEmpty() const + { return m_nCount == 0; } +template +inline void CMap::SetAt(ARG_KEY key, ARG_VALUE newValue) + { (*this)[key] = newValue; } +template +inline POSITION CMap::GetStartPosition() const + { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; } +template +inline UINT CMap::GetHashTableSize() const + { return m_nHashTableSize; } + +///////////////////////////////////////////////////////////////////////////// +// CMap out-of-line functions + +template +CMap::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 +void CMap::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 +void CMap::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 +CMap::~CMap() +{ + RemoveAll(); + ASSERT(m_nCount == 0); +} + +template +CMap::CAssoc* +CMap::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 +void CMap::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 +CMap::CAssoc* +CMap::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 +BOOL CMap::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 +VALUE& CMap::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 +BOOL CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 + +template +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 + +template +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 + +template +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 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 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 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 ident_name; +#define EXTERN_THREAD_LOCAL(class_name, ident_name) \ + extern AFX_DATA THREAD_LOCAL(class_name, ident_name) + +template +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 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 +#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 + +struct HKEY__; +typedef struct HKEY__ *HKEY; + +#ifndef _INC_COMMCTRL + #include +#endif + +#ifndef EXPORT +#define EXPORT +#endif + +#ifndef _INC_TCHAR + #include // used for ANSI v.s. UNICODE abstraction +#endif +#ifdef _MBCS +#ifndef _INC_MBCTYPE + #include +#endif +#ifndef _INC_MBSTRING + #include +#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 + +// Include any non-Intel platform specific items +#ifndef _X86_ + #include +#endif + +// Include any non-Windows OS-specific items +#ifdef _MAC + #include +#endif + +#if defined(_X86_) || defined(_MAC) + #define _AFX_MINREBUILD +#endif + +#ifdef _CUSTOM +// Put any custom configuration items in afxv_cfg.h + #include +#endif + +// setup default packing value +#ifndef _AFX_PACKING + #define _AFX_PACKING 4 // default packs structs at 4 bytes +#endif + +#ifdef _AFXDLL + #include +#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 +#endif + +// Note: WINDOWS.H already included from AFXV_W32.H + +#ifndef _INC_SHELLAPI + #include +#endif + +#ifndef __AFXRES_H__ + #include // standard resource IDs +#endif + +#ifndef __AFXCOLL_H__ + #include // 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 + +///////////////////////////////////////////////////////////////////////////// +// 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 // 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 or, OnGet + AFX_PMSG pfnSet; // special member for OnSet + 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 +#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 +#include +#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 // 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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 "-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/3dcheck.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/95check.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/copy4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/help.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/help.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/magnify.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/magnify.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/minifwnd.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/move4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/nodrop.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/ntcheck.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/sarrows.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/split.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/splith.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/splitv.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/trck4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/trcknesw.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/trckns.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/trcknwse.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/trckwe.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc40/res/truetype.bmp 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 +*/ + +/* 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 // 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 +#endif +#ifndef _INC_STDIO + #include +#endif +#ifndef _INC_STDLIB + #include +#endif +#ifndef _INC_TIME + #include +#endif +#ifndef _INC_LIMITS + #include +#endif +#ifndef _INC_STDDEF + #include +#endif +#ifndef _INC_STDARG + #include +#endif + +#ifndef _AFX_NO_DEBUG_CRT +#ifndef _INC_CRTDBG + #include +#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 +#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 + #ifndef __AFXSTATE_H__ + #include // for _AFX_APP_STATE and _AFX_THREAD_STATE + #endif +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFX_INLINE inline +#include +#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 +#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 +#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 + #endif + #ifdef __AFXOLE_H__ // only include richole if OLE support is included + #ifndef _RICHOLE_ + #include + #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 +#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 +#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 // for MFC private state structures +#endif + +///////////////////////////////////////////////////////////////////////////// +// Inline function declarations + +#ifdef _AFX_ENABLE_INLINES +#define _AFXCOLL_INLINE inline +#include +#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 +#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 +#endif // _INC_CRTDBG +#define ASSERT(x) _ASSERT(x) +#endif // ASSERT + +///////////////////////////////////////////////////////////////////////////// + +template +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(&_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(NULL)); + return E_NOINTERFACE; + } + + // Query for this interface + Interface* pInterface; + HRESULT hr = pUnknown->QueryInterface(GetIID(), + reinterpret_cast(&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 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(&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 : public _CIP +{ +public: + // Simplified name for base class and provide derived classes + // access to base type + typedef _CIP 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(cp) { } + + // Saves and AddRef()s the interface. + CIP(Interface* pInterface) + : _CIP(pInterface) { } + + // Saves and then AddRef()s only if bAddRef is TRUE. + CIP(Interface* pInterface, BOOL bAddRef) + : _CIP(pInterface, bAddRef) { } + + // Creates the interface from the CLSID. + CIP(const CLSID& clsid) : _CIP(clsid) { } + + // Creates the interface from the CLSID. + CIP(LPOLESTR str) : _CIP(str) { } + + // Copies and AddRef()'s the interface. + CIP& operator=(const CIP& cp) + { _CIP::operator=(cp); return *this; } + + // Saves and AddRef()s the interface. The previously saved + // interface is released. + CIP& operator=(Interface* pInterface) + { _CIP::operator=(pInterface); return *this; } + + // Releases any current interface and loads the class with the + // provided CLSID. + CIP& operator=(const CLSID& clsid) + { _CIP::operator=(clsid); return *this; } + + // Releases any current interface and loads the class with the + // provided CLSID. + CIP& operator=(LPOLESTR str) + { _CIP::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::operator=(pUnknown); + return pUnknown != NULL ? S_OK : E_NOINTERFACE; + } +}; // CIP + +#define IPTR(x) CIP +#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 +#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 +#endif + +// REVIEW: integration of INetSDK with main SDK may make this unnecessary +#if (!defined(DISPID_READYSTATE)) || (!defined(DISPID_READYSTATECHANGE)) + #include +#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 +#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 +#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 +#endif + +#ifndef __AFXCMN_H__ + #include +#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 +#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 // Must include this before dao headers +#endif +#ifndef _DBDAOINT_H_ + #include +#endif +#ifndef _DAOGETRW_H_ + #include +#endif +#ifndef _DBDAOID_H_ + #include +#endif +#ifndef _DBDAOERR_H_ + #include +#endif + +#ifndef __AFXDB__H__ + #include // shared header with ODBC database classes +#endif + +#ifndef __AFXEXT_H__ + #include // 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 +#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 +#endif + +#ifndef __AFXDB__H__ + #include // shared header DAO database classes +#endif + +// include standard SQL/ODBC "C" APIs +#ifndef __SQL + #include // core +#endif +#ifndef __SQLEXT + #include // 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 +#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 +#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 +#endif + +// include necessary OLE headers +#ifndef _OBJBASE_H_ + #include +#endif +#ifndef _OLEAUTO_H_ + #include +#endif +#ifndef _OLECTL_H_ + #include +#endif +//REVIEW: This header has no symbol to prevent repeated includes +#include +#ifndef __ocidl_h__ + #include +#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 +#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 +#endif + +#ifndef _INC_COMMDLG + #include // 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 + #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 +#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 m_classList; +#ifndef _AFX_NO_OLE_SUPPORT + CTypedSimpleList 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 +#endif + +#ifndef __docobj_h__ + #include // 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 +#endif +#ifndef __AFXDLGS_H__ + #include +#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 +#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 +#endif + +#ifndef _WININET_ +#include +#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 +#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 +#include + +#ifndef _INC_STDLIB + #include +#endif +#ifndef _INC_TCHAR + #include +#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 + +#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 +#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 +#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 "HTTP Error %d" + AFX_IDS_HTTP_NO_TEXT "

HTTP Error %d: No message available

\r\n" + AFX_IDS_HTTP_BAD_REQUEST "

BAD REQUEST

Your client sent a request that this server didn't understand.
Request: %s\r\n" + AFX_IDS_HTTP_AUTH_REQUIRED "

AUTH REQUIRED

Browser not authentication-capable or authentication failed.\r\n" + AFX_IDS_HTTP_FORBIDDEN "

FORBIDDEN

Your client does not have permission to get this URL from the server.\r\n" + AFX_IDS_HTTP_NOT_FOUND "

NOT FOUND

The requested URL was not found on this server.\r\n" + AFX_IDS_HTTP_SERVER_ERROR "

SERVER ERROR

The server encountered an internal error or misconfiguration and was unable to complete your request.\r\n" + AFX_IDS_HTTP_NOT_IMPLEMENTED "

NOT IMPLEMENTED

The server is unable to perform the method %s at this time.\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 +#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 +#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 +#endif + +#ifndef __AFXDLGS_H__ + #include +#endif + +#ifdef _MAC + // include OLE dialog/helper APIs + #include +#else + // include OLE dialog/helper APIs + #ifndef _OLEDLG_H_ + #include + #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 +#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 +#endif + +#ifndef __AFXDISP_H__ + #include +#endif + +// include OLE Compound Document headers +#ifndef _OLE2_H_ + #include +#endif + +#ifndef __docobj_h__ + #include +#endif + +#ifndef __datapath_h__ + #include +#endif + +#ifndef __AFXCOM_H__ +#include +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_MALLOC + #include +#endif + +#ifndef __AFXEXT_H__ + #include +#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 +#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 +#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 +#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 +#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 +#endif +#ifndef __AFXDLGS_H__ + #include +#endif +#ifndef __AFXOLE_H__ + #include +#endif +#ifndef _RICHEDIT_ + #include +#endif +#ifndef _RICHOLE_ + #include + #define _RICHOLE_ +#endif +#ifndef __AFXCMN_H__ + #include +#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 +#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 +#endif + +#ifndef _WINSOCKAPI_ + #include +#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 +#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 +#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 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 m_classList; + + // OLE object factories +#ifndef _AFX_NO_OLE_SUPPORT +#ifdef _AFXDLL + COleObjectFactory* m_pFactoryInit; +#endif + CTypedSimpleList 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 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 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 +#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 +#endif + +template +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 +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 +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 +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 +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 +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 +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 + +template +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 inline functions + +template +inline int CArray::GetSize() const + { return m_nSize; } +template +inline int CArray::GetUpperBound() const + { return m_nSize-1; } +template +inline void CArray::RemoveAll() + { SetSize(0, -1); } +template +inline TYPE CArray::GetAt(int nIndex) const + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline void CArray::SetAt(int nIndex, ARG_TYPE newElement) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + m_pData[nIndex] = newElement; } +template +inline TYPE& CArray::ElementAt(int nIndex) + { ASSERT(nIndex >= 0 && nIndex < m_nSize); + return m_pData[nIndex]; } +template +inline const TYPE* CArray::GetData() const + { return (const TYPE*)m_pData; } +template +inline TYPE* CArray::GetData() + { return (TYPE*)m_pData; } +template +inline int CArray::Add(ARG_TYPE newElement) + { int nIndex = m_nSize; + SetAtGrow(nIndex, newElement); + return nIndex; } +template +inline TYPE CArray::operator[](int nIndex) const + { return GetAt(nIndex); } +template +inline TYPE& CArray::operator[](int nIndex) + { return ElementAt(nIndex); } + +///////////////////////////////////////////////////////////////////////////// +// CArray out-of-line functions + +template +CArray::CArray() +{ + m_pData = NULL; + m_nSize = m_nMaxSize = m_nGrowBy = 0; +} + +template +CArray::~CArray() +{ + ASSERT_VALID(this); + + if (m_pData != NULL) + { + DestructElements(m_pData, m_nSize); + delete[] (BYTE*)m_pData; + } +} + +template +void CArray::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 +int CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 +void CArray::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 + +template +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 inline functions + +template +inline int CList::GetCount() const + { return m_nCount; } +template +inline BOOL CList::IsEmpty() const + { return m_nCount == 0; } +template +inline TYPE& CList::GetHead() + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE CList::GetHead() const + { ASSERT(m_pNodeHead != NULL); + return m_pNodeHead->data; } +template +inline TYPE& CList::GetTail() + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline TYPE CList::GetTail() const + { ASSERT(m_pNodeTail != NULL); + return m_pNodeTail->data; } +template +inline POSITION CList::GetHeadPosition() const + { return (POSITION) m_pNodeHead; } +template +inline POSITION CList::GetTailPosition() const + { return (POSITION) m_pNodeTail; } +template +inline TYPE& CList::GetNext(POSITION& rPosition) // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE CList::GetNext(POSITION& rPosition) const // return *Position++ + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pNext; + return pNode->data; } +template +inline TYPE& CList::GetPrev(POSITION& rPosition) // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE CList::GetPrev(POSITION& rPosition) const // return *Position-- + { CNode* pNode = (CNode*) rPosition; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + rPosition = (POSITION) pNode->pPrev; + return pNode->data; } +template +inline TYPE& CList::GetAt(POSITION position) + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline TYPE CList::GetAt(POSITION position) const + { CNode* pNode = (CNode*) position; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + return pNode->data; } +template +inline void CList::SetAt(POSITION pos, ARG_TYPE newElement) + { CNode* pNode = (CNode*) pos; + ASSERT(AfxIsValidAddress(pNode, sizeof(CNode))); + pNode->data = newElement; } + +template +CList::CList(int nBlockSize) +{ + ASSERT(nBlockSize > 0); + + m_nCount = 0; + m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL; + m_pBlocks = NULL; + m_nBlockSize = nBlockSize; +} + +template +void CList::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 +CList::~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 +CList::CNode* +CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +TYPE CList::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 +TYPE CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +POSITION CList::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 +POSITION CList::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 +void CList::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 +void CList::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 +void CList::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 + +template +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 inline functions + +template +inline int CMap::GetCount() const + { return m_nCount; } +template +inline BOOL CMap::IsEmpty() const + { return m_nCount == 0; } +template +inline void CMap::SetAt(ARG_KEY key, ARG_VALUE newValue) + { (*this)[key] = newValue; } +template +inline POSITION CMap::GetStartPosition() const + { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; } +template +inline UINT CMap::GetHashTableSize() const + { return m_nHashTableSize; } + +///////////////////////////////////////////////////////////////////////////// +// CMap out-of-line functions + +template +CMap::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 +void CMap::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 +void CMap::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 +CMap::~CMap() +{ + RemoveAll(); + ASSERT(m_nCount == 0); +} + +template +CMap::CAssoc* +CMap::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 +void CMap::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 +CMap::CAssoc* +CMap::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 +BOOL CMap::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 +VALUE& CMap::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 +BOOL CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 +void CMap::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 + +template +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& src) + { return BASE_CLASS::Append(src); } + void Copy(const CTypedPtrArray& 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* 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 + +template +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* pNewList) + { BASE_CLASS::AddHead(pNewList); } + void AddTail(CTypedPtrList* 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 + +template +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 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 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 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 ident_name; +#define EXTERN_THREAD_LOCAL(class_name, ident_name) \ + extern AFX_DATA THREAD_LOCAL(class_name, ident_name) + +template +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 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 +#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 + +struct HKEY__; +typedef struct HKEY__ *HKEY; + +#ifndef _INC_COMMCTRL + #include +#endif + +#ifndef EXPORT +#define EXPORT +#endif + +#ifndef _INC_TCHAR + #include // used for ANSI v.s. UNICODE abstraction +#endif +#ifdef _MBCS +#ifndef _INC_MBCTYPE + #include +#endif +#ifndef _INC_MBSTRING + #include +#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 + +// Include any non-Intel platform specific items +#ifndef _X86_ + #include +#endif + +// Include any non-Windows OS-specific items +#ifdef _MAC + #include +#endif + +#if defined(_X86_) || defined(_MAC) + #define _AFX_MINREBUILD +#endif + +#ifdef _CUSTOM +// Put any custom configuration items in afxv_cfg.h + #include +#endif + +// setup default packing value +#ifndef _AFX_PACKING + #define _AFX_PACKING 4 // default packs structs at 4 bytes +#endif + +#ifdef _AFXDLL + #include +#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 +#endif + +// Note: WINDOWS.H already included from AFXV_W32.H + +#ifndef _INC_SHELLAPI + #include +#endif + +#ifndef __AFXRES_H__ + #include // standard resource IDs +#endif + +#ifndef __AFXCOLL_H__ + #include // 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 + +///////////////////////////////////////////////////////////////////////////// +// 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 // 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 or, OnGet + AFX_PMSG pfnSet; // special member for OnSet + 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 +#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 +#include +#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 // 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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 "-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·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 +#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 +#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 +#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 +#endif + +#ifndef _INC_DLGS + #include +#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 +#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 +#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 +#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 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/3dcheck.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/95check.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/copy4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/help.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/help.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/magnify.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/magnify.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/minifwnd.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/move4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/nodrop.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/ntcheck.bmp 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/sarrows.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/split.rsc 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/splith.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/splitv.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/trck4way.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/trcknesw.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/trckns.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/trcknwse.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/trckwe.cur 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 Binary files /dev/null and b/public/sdk/inc/mfc42/res/truetype.bmp 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 +*/ + +/* 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 +#include + +#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 + +// +// 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 + 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 +#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 +#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 + 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 + 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 + 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 /* 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 + +#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 +#include +#include + +#include +#include + +#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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 + +// +// 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 // 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 +#include +#include + +// +// 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 + +// +// 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 + +// 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 + +// +// 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 // 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 // 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 +#include +#include +#include + +// +// 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, , 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 + +// 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 // 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 // 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: => 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 => +// +// PWC_WRITE_NAME: PROPERTY_IDS \__ +// PROPERTY_NAMES / +// +// PWC_DELETE_NAME: PROPERTY_IDS => +// +// PROPERTY_IDS \ +// PWC_WRITE_ALL: PROPERTY_NAMES => +// 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)&~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 "!\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 , 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 + +// 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 + + +//////////////////////////////////////////////////////////////////////// +// +// 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 +#include + +// 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 + +// 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 +// 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 + +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 + +// 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 + +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# */ +/* */ +/* the VER_PRODUCTBETA_STR lines must contain the product */ +/* comments (Win9x or NT) and end with "some string" */ +/*--------------------------------------------------------------*/ + +#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 + 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 +#include + +#if !defined( _OBJBASE_H_ ) +#define _OBJBASE_H_ + +#include + +#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 + +#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 +#include +#include + + +// 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 +#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 +#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 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 + 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 + 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 + 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 + 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 + 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 + +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 /* 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 +#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 + +// 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 + +#include +#include + +// 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 + + + + + + +/****** 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 +#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 +#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 + + +/*---------------------------------------------------------------------*/ +/* 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 +#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 +#else // not _MAC + +#if !defined(RC_INVOKED) +#pragma pack(8) +#endif + +#include +#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 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 +#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", + 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 +#endif +#ifndef _INC_SHELLAPI +#include +#endif +#ifndef _INC_COMMDLG +#include +#endif +#ifndef _OLE2_H_ +#include +#endif +#include +#include + +#endif // RC_INVOKED + +#include // 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 + +#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 +#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 + 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 + 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 + 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 +#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 +#if defined(_WINDOWS) || defined(_DLL) +#include +#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 +#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 +#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 +#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 "", 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 + +//+------------------------------------------------------------------------- +// +// 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 // for BOOL, BYTE, ULONG, USHORT +#ifndef _CV_INFO_INCLUDED +# include +#endif +#include + +#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 // necessary for data types used in this file +#include // 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 + 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 +#include +#include +#ifdef NEVER +#include +#include +#endif +} + +#include +#include +#include +#include +#include + +//+------------------------------------------------------------------------- +// +// 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 + 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 +#include + +#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 + +#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 + +#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 + +#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 + +#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 and for more. +* +****/ + +#ifndef _INC_SETJMP + +#include + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 +#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 + + + + +// +// 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 // CBaseStorageVariant declarations +#include // Appendix B Property set structure definitions + +#ifndef _MAC_NODOC +#include // For CP_WINUNICODE +#include +#endif + +#include +#include + +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 +#include + +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 +#include +#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 + 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 + 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 + 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 + 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 + 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 +#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 + +/* 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 +#endif + +#include + +#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 + +#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 + +#ifdef __cplusplus +extern "C" { +#endif + +#include + + +/* 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 + +#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 macro was not found in the device .INF file secion.%0 + */ +#define ERROR_DEFAULTOFF_MACRO_NOT_FOUND (RASBASE+56) +/* + * The 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 +#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 + +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 + 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 + + +#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\\ +#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 +#include +#include +} +#include + +//+----------------------------------------------------------------- +// +// 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 +#include + +// +// 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 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 +#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 +#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 + 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 +#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 +#include +#include + + +#include +#include + +#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 + +#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 _from_ndr + (to unsigned ) + Added _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 + +#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 +#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 +#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 +#include +#include +#include + +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 + 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 + 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 +#include + +//+------------------------------------------------------------------------- +// +// 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 +#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 /* 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 + +#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 + + +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 // 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 + +#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL) +#include +#endif + +// +// Include the error codes: +// + +#if ISSP_LEVEL == 32 +#include +#endif + +#if ISSP_LEVEL == 16 +#include +#endif + + + +// Include security package headers: + +#ifdef SECURITY_PACKAGE + +#include + +#endif // SECURITY_PACKAGE + + +#ifdef SECURITY_KERBEROS + +#include +#include + +#endif + +#ifdef SECURITY_NTLM + +#include + +#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 + +#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 +}; +#include + +// 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 // 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 + + +// +// 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 in the AddReg line format given below: +// +// ,,,,... +// +// 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 + +#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 + +#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 + +#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 +#ifndef _PRSHT_H_ +#include +#endif +#ifndef _INC_COMMCTRL +#include // for LPTBBUTTON +#endif + +#ifndef INITGUID +#include +#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 + +// +// 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 +#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 +#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 + +#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 +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 + +//+------------------------------------------------------------------------- +// +// 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 : +// +// - the class factory class is named CF. +// - the class factory instance is named gcfFactory +// - the class id for the class is named CLSID_ +// - the class descriptor for the class is named gcdDescriptor +// +// 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 +#include +#include + +//+------------------------------------------------------------------------- +// +// 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 +#include + +//+------------------------------------------------------------------------- +// +// 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 + +//+------------------------------------------------------------------------- +// +// 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 + 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 + 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 + 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 + 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 + +// +// 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 + +#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: + * Christian Fortini + * + * History: + * 8/1/95 ricksa Revised interface definition + */ + +#ifndef _TEXTSERV_H +#define _TEXTSERV_H + + +#include + +// 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 + */ +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 + */ +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 + +#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 + 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 + +#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 + +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 + +#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 +#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 field of the 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() + * LIST ('strl' + * strh() + * strf() + * ... additional header data + * LIST('movi' + * { LIST('rec' + * SubChunk... + * ) + * | SubChunk } .... + * ) + * [ ] + * ) + * + * 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 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 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 +#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 + +/* - - - - - - - - */ + + +/****** 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 +#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 + +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 + 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 + 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 + +/* 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 +#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 +#include +#endif /* RC_INVOKED */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32_LEAN_AND_MEAN +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef NOCRYPT +#include +#endif + +#ifndef NOGDI +#include +#include +#ifdef INC_OLE1 +#include +#else +#include +#endif /* !INC_OLE1 */ +#endif /* !NOGDI */ +#endif /* WIN32_LEAN_AND_MEAN */ + +#ifdef INC_OLE2 +#include +#endif /* INC_OLE2 */ + +#ifndef NOSERVICE +#include +#endif + +#if(WINVER >= 0x0400) +#ifndef NOMCX +#include +#endif /* NOMCX */ + +#ifndef NOIME +#include +#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 \ or simply +// +#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 \ 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 +typedef struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} RGBTRIPLE; +#include + +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 +typedef struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER; +#include + +#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 +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 + +/* 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 +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 + +#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 +#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 + +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 + + +//////////////////////////////////////////////////////////////////////// +// // +// 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)&~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 "!\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 +#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 +#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 + +/* + * 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 +#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 + +#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 +#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 + +#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 + +/* + * 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 /* 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 + +/* + * Pull in WINSOCK2.H if necessary + */ + +#ifndef _WINSOCK2API_ +#include +#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 + + +#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) // + +/* 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; _isnb_name[_i] = ' '; \ + } \ + for (_i=0; *((_name)+_i) != '\0' && _isnb_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 + + +// +// 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 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 s pressed + LINE y; // - cursor line + COL x; // - cursor column +} NULLARGTYPE; + +typedef struct lineargType { // line argument specified + int cArg; // - count of 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 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 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 Binary files /dev/null and b/public/sdk/lib/i386/crtdll.pdb differ diff --git a/public/sdk/lib/i386/crtdlld.pdb b/public/sdk/lib/i386/crtdlld.pdb new file mode 100644 index 000000000..f88bfcf8f Binary files /dev/null and b/public/sdk/lib/i386/crtdlld.pdb differ diff --git a/public/sdk/lib/i386/libc.pdb b/public/sdk/lib/i386/libc.pdb new file mode 100644 index 000000000..36f9f7289 Binary files /dev/null and b/public/sdk/lib/i386/libc.pdb differ diff --git a/public/sdk/lib/i386/libcd.pdb b/public/sdk/lib/i386/libcd.pdb new file mode 100644 index 000000000..3b72c32c7 Binary files /dev/null and b/public/sdk/lib/i386/libcd.pdb differ diff --git a/public/sdk/lib/i386/libcmt.pdb b/public/sdk/lib/i386/libcmt.pdb new file mode 100644 index 000000000..5998ae539 Binary files /dev/null and b/public/sdk/lib/i386/libcmt.pdb differ diff --git a/public/sdk/lib/i386/libcmtd.pdb b/public/sdk/lib/i386/libcmtd.pdb new file mode 100644 index 000000000..c7e65a50d Binary files /dev/null and b/public/sdk/lib/i386/libcmtd.pdb differ diff --git a/public/sdk/lib/i386/mfcs40.pdb b/public/sdk/lib/i386/mfcs40.pdb new file mode 100644 index 000000000..c5d088846 Binary files /dev/null and b/public/sdk/lib/i386/mfcs40.pdb differ diff --git a/public/sdk/lib/i386/mfcs40d.pdb b/public/sdk/lib/i386/mfcs40d.pdb new file mode 100644 index 000000000..67f5f3b65 Binary files /dev/null and b/public/sdk/lib/i386/mfcs40d.pdb differ diff --git a/public/sdk/lib/i386/mfcs40u.pdb b/public/sdk/lib/i386/mfcs40u.pdb new file mode 100644 index 000000000..9067bced0 Binary files /dev/null and b/public/sdk/lib/i386/mfcs40u.pdb differ diff --git a/public/sdk/lib/i386/mfcs40ud.pdb b/public/sdk/lib/i386/mfcs40ud.pdb new file mode 100644 index 000000000..ce0145a00 Binary files /dev/null and b/public/sdk/lib/i386/mfcs40ud.pdb differ diff --git a/public/sdk/lib/i386/mfcs42.pdb b/public/sdk/lib/i386/mfcs42.pdb new file mode 100644 index 000000000..75189ce89 Binary files /dev/null and b/public/sdk/lib/i386/mfcs42.pdb differ diff --git a/public/sdk/lib/i386/mfcs42d.pdb b/public/sdk/lib/i386/mfcs42d.pdb new file mode 100644 index 000000000..2aeae703a Binary files /dev/null and b/public/sdk/lib/i386/mfcs42d.pdb differ diff --git a/public/sdk/lib/i386/mfcs42u.pdb b/public/sdk/lib/i386/mfcs42u.pdb new file mode 100644 index 000000000..50f8ebdd4 Binary files /dev/null and b/public/sdk/lib/i386/mfcs42u.pdb differ diff --git a/public/sdk/lib/i386/mfcs42ud.pdb b/public/sdk/lib/i386/mfcs42ud.pdb new file mode 100644 index 000000000..70b481d50 Binary files /dev/null and b/public/sdk/lib/i386/mfcs42ud.pdb differ diff --git a/public/sdk/lib/i386/msvcrt.pdb b/public/sdk/lib/i386/msvcrt.pdb new file mode 100644 index 000000000..c6a1f1ca1 Binary files /dev/null and b/public/sdk/lib/i386/msvcrt.pdb differ diff --git a/public/sdk/lib/i386/msvcrtd.pdb b/public/sdk/lib/i386/msvcrtd.pdb new file mode 100644 index 000000000..f88bfcf8f Binary files /dev/null and b/public/sdk/lib/i386/msvcrtd.pdb differ diff --git a/public/sdk/lib/i386/nafxcw.pdb b/public/sdk/lib/i386/nafxcw.pdb new file mode 100644 index 000000000..a320b7b67 Binary files /dev/null and b/public/sdk/lib/i386/nafxcw.pdb differ diff --git a/public/sdk/lib/i386/nafxcwd.pdb b/public/sdk/lib/i386/nafxcwd.pdb new file mode 100644 index 000000000..f6f1c6a82 Binary files /dev/null and b/public/sdk/lib/i386/nafxcwd.pdb differ diff --git a/public/sdk/lib/i386/uafxcw.pdb b/public/sdk/lib/i386/uafxcw.pdb new file mode 100644 index 000000000..78f6e8ce5 Binary files /dev/null and b/public/sdk/lib/i386/uafxcw.pdb differ diff --git a/public/sdk/lib/i386/uafxcwd.pdb b/public/sdk/lib/i386/uafxcwd.pdb new file mode 100644 index 000000000..23b28cb33 Binary files /dev/null and b/public/sdk/lib/i386/uafxcwd.pdb 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 Binary files /dev/null and b/public/sdk/lib/ossinfo 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 Binary files /dev/null and b/public/sdk/lib/ppc/int64.lib.vc differ diff --git a/public/sdk/lib/ppc/int64.mcl b/public/sdk/lib/ppc/int64.mcl new file mode 100644 index 000000000..d07736030 Binary files /dev/null and b/public/sdk/lib/ppc/int64.mcl 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 Binary files /dev/null and b/public/sdk/lib/system.mdb 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 = " +} + +,{ +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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16c1.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16c3.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16c4.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16c5.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16c6.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16dg3.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpc16dg6.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpcns.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpcnslm.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/rpcnsmgm.rpc 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 Binary files /dev/null and b/public/sdk/rpc16/dos/dll/security.rpc 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 + +// +// 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 + +#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 _from_ndr + (to unsigned ) + Added _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 + +#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 +#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 +#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 + +// +// 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 + +#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 + +#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 _from_ndr + (to unsigned ) + Added _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 + +#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 +#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 +#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 + +// +// 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 + +#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 + +#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 _from_ndr + (to unsigned ) + Added _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 + +#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 +#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 +#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 Binary files /dev/null and b/public/sdk/rpc16/sdk/dnetapi.dl_ differ diff --git a/public/sdk/rpc16/sdk/drpc.h_ b/public/sdk/rpc16/sdk/drpc.h_ new file mode 100644 index 000000000..95ca34154 Binary files /dev/null and b/public/sdk/rpc16/sdk/drpc.h_ differ diff --git a/public/sdk/rpc16/sdk/drpc.li_ b/public/sdk/rpc16/sdk/drpc.li_ new file mode 100644 index 000000000..3ce0bd5e3 Binary files /dev/null and b/public/sdk/rpc16/sdk/drpc.li_ differ diff --git a/public/sdk/rpc16/sdk/drpcndr.li_ b/public/sdk/rpc16/sdk/drpcndr.li_ new file mode 100644 index 000000000..4cf645885 Binary files /dev/null and b/public/sdk/rpc16/sdk/drpcndr.li_ differ diff --git a/public/sdk/rpc16/sdk/midles.h_ b/public/sdk/rpc16/sdk/midles.h_ new file mode 100644 index 000000000..cac7a1f5a Binary files /dev/null and b/public/sdk/rpc16/sdk/midles.h_ differ diff --git a/public/sdk/rpc16/sdk/mrpc.h_ b/public/sdk/rpc16/sdk/mrpc.h_ new file mode 100644 index 000000000..6d89dd06d Binary files /dev/null and b/public/sdk/rpc16/sdk/mrpc.h_ differ diff --git a/public/sdk/rpc16/sdk/mrpc.li_ b/public/sdk/rpc16/sdk/mrpc.li_ new file mode 100644 index 000000000..f99614244 Binary files /dev/null and b/public/sdk/rpc16/sdk/mrpc.li_ differ diff --git a/public/sdk/rpc16/sdk/mscuistf.dl_ b/public/sdk/rpc16/sdk/mscuistf.dl_ new file mode 100644 index 000000000..1c01af909 Binary files /dev/null and b/public/sdk/rpc16/sdk/mscuistf.dl_ 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 Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcdce.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcdcep.h_ b/public/sdk/rpc16/sdk/rpcdcep.h_ new file mode 100644 index 000000000..1f180353f Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcdcep.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcerr.h_ b/public/sdk/rpc16/sdk/rpcerr.h_ new file mode 100644 index 000000000..4e0ea7a0e Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcerr.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcmac.h_ b/public/sdk/rpc16/sdk/rpcmac.h_ new file mode 100644 index 000000000..6f7e924ad Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcmac.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcndr.h_ b/public/sdk/rpc16/sdk/rpcndr.h_ new file mode 100644 index 000000000..09840bef6 Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcndr.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcnsi.h_ b/public/sdk/rpc16/sdk/rpcnsi.h_ new file mode 100644 index 000000000..e137ed300 Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcnsi.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcnsip.h_ b/public/sdk/rpc16/sdk/rpcnsip.h_ new file mode 100644 index 000000000..f7345eb1f Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcnsip.h_ differ diff --git a/public/sdk/rpc16/sdk/rpcsdk.in_ b/public/sdk/rpc16/sdk/rpcsdk.in_ new file mode 100644 index 000000000..54d98cae3 Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcsdk.in_ 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 Binary files /dev/null and b/public/sdk/rpc16/sdk/rpcx86.h_ 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 Binary files /dev/null and b/public/sdk/rpc16/sdk/uuidgen.ex_ differ diff --git a/public/sdk/rpc16/sdk/wrpc.h_ b/public/sdk/rpc16/sdk/wrpc.h_ new file mode 100644 index 000000000..f3f998593 Binary files /dev/null and b/public/sdk/rpc16/sdk/wrpc.h_ differ diff --git a/public/sdk/rpc16/sdk/wrpc.li_ b/public/sdk/rpc16/sdk/wrpc.li_ new file mode 100644 index 000000000..8ed4d9352 Binary files /dev/null and b/public/sdk/rpc16/sdk/wrpc.li_ differ diff --git a/public/sdk/rpc16/sdk/wrpcndr.li_ b/public/sdk/rpc16/sdk/wrpcndr.li_ new file mode 100644 index 000000000..c3c250420 Binary files /dev/null and b/public/sdk/rpc16/sdk/wrpcndr.li_ 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c1.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c3.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c4.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c5.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c6.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16c8.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16dg3.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpc16dg6.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpcns1.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/rpcrt1.sym 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 Binary files /dev/null and b/public/sdk/rpc16/win/dll/security.sym 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 + +// +// 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 + +#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 _from_ndr + (to unsigned ) + Added _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 + +#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 +#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 +#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 Binary files /dev/null and b/public/sdk/rpc16/win/lib/winmain.res differ -- cgit v1.2.3