Full Code of otya128/winevdm for AI

master bd4c7b6cd0da cached
1307 files
21.0 MB
5.6M tokens
17786 symbols
2 requests
Copy disabled (too large) Download .txt
Showing preview only (22,235K chars total). Download the full file to get everything.
Repository: otya128/winevdm
Branch: master
Commit: bd4c7b6cd0da
Files: 1307
Total size: 21.0 MB

Directory structure:
gitextract__5xouun8/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       └── bug_report.md
├── .gitignore
├── BuildToolProperty.props
├── CMakeLists.txt
├── LICENSE
├── PropertySheet.props
├── README.md
├── READMEJP.md
├── appveyor.yml
├── avifile/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── avifile.def
│   ├── avifile.dll16.spec
│   ├── avifile.vcxproj
│   └── main.c
├── comm/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── comm.def
│   ├── comm.drv16.spec
│   └── comm.vcxproj
├── commctrl/
│   ├── CMakeLists.txt
│   ├── commctrl.c
│   ├── commctrl.def
│   ├── commctrl.dll16.spec
│   └── commctrl.vcxproj
├── commdlg/
│   ├── CMakeLists.txt
│   ├── cdlg16.h
│   ├── colordlg.c
│   ├── commdlg.def
│   ├── commdlg.dll16.spec
│   ├── commdlg.rc
│   ├── commdlg.vcxproj
│   ├── commdlg.vcxproj.filters
│   ├── filedlg.c
│   ├── finddlg.c
│   ├── fontdlg.c
│   ├── printdlg.c
│   └── resource.h
├── compobj/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── compobj.c
│   ├── compobj.def
│   ├── compobj.dll16.spec
│   └── compobj.vcxproj
├── convertwinefile/
│   ├── convertwinefile.vcxproj
│   ├── convertwinefile.vcxproj.filters
│   └── main.c
├── convspec/
│   ├── CMakeLists.txt
│   ├── build.h
│   ├── convspec.c
│   ├── convspec.vcxproj
│   ├── convspec.vcxproj.filters
│   ├── import.c
│   ├── main.c.h
│   ├── parser.c
│   ├── relay.c
│   ├── res16.c
│   ├── res32.c
│   ├── spec16.c
│   ├── spec32.c
│   ├── utils.c
│   └── ver.h
├── ctl3d/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ctl3d.c
│   ├── ctl3d.def
│   ├── ctl3d.dll16.spec
│   └── ctl3d.vcxproj
├── ctl3dv2/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ctl3d.c
│   ├── ctl3dv2.def
│   ├── ctl3dv2.dll16.spec
│   └── ctl3dv2.vcxproj
├── ddeml/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ddeml.c
│   ├── ddeml.def
│   ├── ddeml.dll16.spec
│   └── ddeml.vcxproj
├── dispdib/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── dispdib.c
│   ├── dispdib.def
│   ├── dispdib.dll16.spec
│   └── dispdib.vcxproj
├── display/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── display.c
│   ├── display.def
│   ├── display.drv16.spec
│   ├── display.rc
│   └── display.vcxproj
├── dummy.c
├── dummydll/
│   └── vgaoem.fon
├── gdi/
│   ├── CMakeLists.txt
│   ├── bidi.c
│   ├── env.c
│   ├── gdi.c
│   ├── gdi.def
│   ├── gdi.exe16.spec
│   ├── gdi.vcxproj
│   ├── gdi.vcxproj.filters
│   ├── metafile.c
│   └── printdrv.c
├── gvm/
│   ├── CMakeLists.txt
│   ├── gvm-interface.h
│   ├── gvm.c
│   ├── gvm.def
│   ├── gvm.h
│   ├── gvm.vcxproj
│   └── gvm.vcxproj.filters
├── haxmvm/
│   ├── CMakeLists.txt
│   ├── haxmvm.c
│   ├── haxmvm.h
│   ├── haxmvm.vcxproj
│   └── haxmvm.vcxproj.filters
├── install (no console).lnk
├── install.inf
├── install.lnk
├── installw.inf
├── keyboard/
│   ├── CMakeLists.txt
│   ├── keyboard.c
│   ├── keyboard.def
│   ├── keyboard.drv16.spec
│   ├── keyboard.vcxproj
│   └── keyboard.vcxproj.filters
├── krnl386/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── atom.c
│   ├── compat.c
│   ├── conf.c
│   ├── dma.c
│   ├── dosaspi.c
│   ├── dosdev.c
│   ├── dosexe.c
│   ├── dosexe.h
│   ├── dosmem.c
│   ├── dosvm.c
│   ├── error.c
│   ├── file.c
│   ├── fpu.c
│   ├── global.c
│   ├── instr.c
│   ├── int09.c
│   ├── int10.c
│   ├── int13.c
│   ├── int15.c
│   ├── int16.c
│   ├── int21.c
│   ├── int25.c
│   ├── int26.c
│   ├── int2f.c
│   ├── int31.c
│   ├── int33.c
│   ├── int67.c
│   ├── interrupts.c
│   ├── ioports.c
│   ├── kernel.c
│   ├── kernel16_private.h
│   ├── krnl386.def
│   ├── krnl386.exe16.spec
│   ├── krnl386.vcxproj
│   ├── krnl386.vcxproj.filters
│   ├── local.c
│   ├── ne_module.c
│   ├── ne_segment.c
│   ├── registry.c
│   ├── relay.c
│   ├── resource.c
│   ├── selector.c
│   ├── snoop.c
│   ├── soundblaster.c
│   ├── stub.c
│   ├── syslevel.c
│   ├── task.c
│   ├── thunk.c
│   ├── timer.c
│   ├── utthunk.c
│   ├── vdd.c
│   ├── version.rc
│   ├── vga.c
│   ├── vga.h
│   ├── vxd.c
│   ├── wow_handle.c
│   └── wowthunk.c
├── lzexpand/
│   ├── CMakeLists.txt
│   ├── lzexpand.c
│   ├── lzexpand.def
│   ├── lzexpand.dll16.spec
│   ├── lzexpand.vcxproj
│   ├── lzexpand.vcxproj.filters
│   └── wine_lzexpand.c
├── mmsystem/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── driver.c
│   ├── mci16.c
│   ├── message16.c
│   ├── mmio16.c
│   ├── mmsystem.c
│   ├── mmsystem.def
│   ├── mmsystem.dll16.spec
│   ├── mmsystem.vcxproj
│   ├── playsound.c
│   └── winemm16.h
├── mouse/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── mouse.c
│   ├── mouse.def
│   ├── mouse.drv16.spec
│   ├── mouse.rc
│   └── mouse.vcxproj
├── msacm/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── msacm.c
│   ├── msacm.def
│   ├── msacm.dll16.spec
│   ├── msacm.vcxproj
│   └── wineacm16.h
├── msvideo/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── msvideo.def
│   ├── msvideo.dll16.spec
│   ├── msvideo.vcxproj
│   ├── msvideo16.c
│   └── vfw16.h
├── nddeapi/
│   ├── CMakeLists.txt
│   ├── nddeapi.c
│   ├── nddeapi.def
│   ├── nddeapi.dll16.spec
│   └── nddeapi.vcxproj
├── netapi/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── netapi.c
│   ├── netapi.def
│   ├── netapi.dll16.spec
│   └── netapi.vcxproj
├── ntvdm/
│   ├── CMakeLists.txt
│   ├── main.c
│   ├── ntvdm.def
│   ├── ntvdm.dll.spec
│   └── ntvdm.vcxproj
├── ole2/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── hglobalstream.c
│   ├── ifs.h
│   ├── ifs.idl
│   ├── ifs_thunk.c
│   ├── ifs_thunk.h
│   ├── memlockbytes.c
│   ├── ole2.c
│   ├── ole2.def
│   ├── ole2.dll16.spec
│   └── ole2.vcxproj
├── ole2conv/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2conv.def
│   ├── ole2conv.dll16.spec
│   └── ole2conv.vcxproj
├── ole2disp/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2disp.c
│   ├── ole2disp.def
│   ├── ole2disp.dll16.spec
│   ├── ole2disp.h
│   ├── ole2disp.vcxproj
│   ├── var/
│   │   ├── resource.h
│   │   ├── varformat.c
│   │   ├── variant.c
│   │   ├── variant.h
│   │   └── vartype.c
│   ├── wine_typelib.c
│   └── wine_typelib.h
├── ole2nls/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2nls.c
│   ├── ole2nls.def
│   ├── ole2nls.dll16.spec
│   ├── ole2nls.vcxproj
│   └── version.rc
├── ole2prox/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2prox.def
│   ├── ole2prox.dll16.spec
│   └── ole2prox.vcxproj
├── ole2thk/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2thk.def
│   ├── ole2thk.dll16.spec
│   └── ole2thk.vcxproj
├── olecli/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── olecli.c
│   ├── olecli.def
│   ├── olecli.dll16.spec
│   ├── olecli.h
│   └── olecli.vcxproj
├── olesvr/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── olesvr.c
│   ├── olesvr.def
│   ├── olesvr.dll16.spec
│   ├── olesvr.vcxproj
│   └── olesvr.vcxproj.filters
├── otvdm/
│   ├── CMakeLists.txt
│   ├── otvdm.rc
│   ├── otvdm.vcxproj
│   ├── otvdm.vcxproj.filters
│   ├── otvdmw.vcxproj
│   ├── otvdmw.vcxproj.filters
│   ├── resource.h
│   ├── visualstyle.manifest
│   └── winevdm.c
├── otvdm.ini
├── otvdm.sln
├── regedit/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── regedit.c
│   ├── regedit.def
│   ├── regedit.exe16.spec
│   └── regedit.vcxproj
├── rmpatch/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── instr.c
│   ├── rmpatch.c
│   ├── rmpatch.def
│   ├── rmpatch.dll16.spec
│   └── rmpatch.vcxproj
├── shell/
│   ├── CMakeLists.txt
│   ├── shell.c
│   ├── shell.def
│   ├── shell.dll16.spec
│   ├── shell.vcxproj
│   └── shell.vcxproj.filters
├── sound/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── sound.c
│   ├── sound.def
│   ├── sound.drv16.spec
│   └── sound.vcxproj
├── storage/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ifs.h
│   ├── storage.c
│   ├── storage.def
│   ├── storage.dll16.spec
│   └── storage.vcxproj
├── system/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── system.c
│   ├── system.def
│   ├── system.drv16.spec
│   └── system.vcxproj
├── timer/
│   ├── CMakeLists.txt
│   ├── timer.c
│   ├── timer.def
│   ├── timer.drv16.spec
│   └── timer.vcxproj
├── toolhelp/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── toolhelp.c
│   ├── toolhelp.def
│   ├── toolhelp.dll16.spec
│   ├── toolhelp.h
│   └── toolhelp.vcxproj
├── tools/
│   └── package.ps1
├── typelib/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── typelib.c
│   ├── typelib.def
│   ├── typelib.dll16.spec
│   └── typelib.vcxproj
├── uninstall.reg
├── user/
│   ├── CMakeLists.txt
│   ├── bidi.c
│   ├── comm.c
│   ├── dde.c
│   ├── dialog.c
│   ├── hook.c
│   ├── message.c
│   ├── message_table.h
│   ├── network.c
│   ├── stub.c
│   ├── user.c
│   ├── user.def
│   ├── user.exe16.spec
│   ├── user.rc
│   ├── user.vcxproj
│   ├── user.vcxproj.filters
│   ├── user_private.h
│   ├── window.c
│   └── winhelp.c
├── ver/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ver.def
│   ├── ver.dll16.spec
│   ├── ver.vcxproj
│   └── version.c
├── vm86/
│   ├── CMakeLists.txt
│   ├── COPYING.txt
│   ├── mame/
│   │   ├── emu/
│   │   │   └── cpu/
│   │   │       ├── i386/
│   │   │       │   ├── cycles.h
│   │   │       │   ├── i386.c
│   │   │       │   ├── i386.h
│   │   │       │   ├── i386dasm.c
│   │   │       │   ├── i386op16.c
│   │   │       │   ├── i386op32.c
│   │   │       │   ├── i386ops.c
│   │   │       │   ├── i386ops.h
│   │   │       │   ├── i386priv.h
│   │   │       │   ├── i486ops.c
│   │   │       │   ├── pentops.c
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   └── x87ops.c
│   │   │       ├── i386.old/
│   │   │       │   ├── cycles.h
│   │   │       │   ├── i386.c
│   │   │       │   ├── i386.h
│   │   │       │   ├── i386dasm.c
│   │   │       │   ├── i386op16.c
│   │   │       │   ├── i386op32.c
│   │   │       │   ├── i386ops.c
│   │   │       │   ├── i386ops.h
│   │   │       │   ├── i386priv.h
│   │   │       │   ├── i486ops.c
│   │   │       │   ├── pentops.c
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   └── x87ops.c
│   │   │       ├── i86/
│   │   │       │   ├── ea.h
│   │   │       │   ├── host.h
│   │   │       │   ├── i286.c
│   │   │       │   ├── i286.h
│   │   │       │   ├── i86.c
│   │   │       │   ├── i86.h
│   │   │       │   ├── i86.txt
│   │   │       │   ├── i86priv.h
│   │   │       │   ├── i86time.c
│   │   │       │   ├── instr186.c
│   │   │       │   ├── instr186.h
│   │   │       │   ├── instr286.c
│   │   │       │   ├── instr286.h
│   │   │       │   ├── instr86.c
│   │   │       │   ├── instr86.h
│   │   │       │   ├── modrm.h
│   │   │       │   ├── modrm286.h
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   ├── table186.h
│   │   │       │   ├── table286.h
│   │   │       │   └── table86.h
│   │   │       ├── readme_msdos_player.txt
│   │   │       ├── vtlb.c
│   │   │       └── vtlb.h
│   │   └── lib/
│   │       └── softfloat/
│   │           ├── README.txt
│   │           ├── f2xm1.c
│   │           ├── fpatan.c
│   │           ├── fpu_constant.h
│   │           ├── fsincos.c
│   │           ├── fyl2x.c
│   │           ├── mamesf.h
│   │           ├── milieu.h
│   │           ├── readme_msdos_player.txt
│   │           ├── softfloat-macros
│   │           ├── softfloat-specialize
│   │           ├── softfloat.c
│   │           └── softfloat.h
│   ├── msdos.cpp
│   ├── msdos.h
│   ├── vm86.def
│   ├── vm86.vcxproj
│   └── vm86.vcxproj.filters
├── whpxvm/
│   ├── CMakeLists.txt
│   ├── whpxvm.c
│   ├── whpxvm.def
│   ├── whpxvm.h
│   └── whpxvm.vcxproj
├── widl/
│   ├── CMakeLists.txt
│   ├── client.c
│   ├── expr.c
│   ├── expr.h
│   ├── getopt.c
│   ├── getopt_msvc.h
│   ├── hash.c
│   ├── hash.h
│   ├── header.c
│   ├── header.h
│   ├── parser.h
│   ├── parser.l
│   ├── parser.y
│   ├── proxy.c
│   ├── register.c
│   ├── relay16.c
│   ├── server.c
│   ├── typegen.c
│   ├── typegen.h
│   ├── typelib.c
│   ├── typelib.h
│   ├── typelib_struct.h
│   ├── typetree.c
│   ├── typetree.h
│   ├── utils.c
│   ├── utils.h
│   ├── widl.c
│   ├── widl.h
│   ├── widl.vcxproj
│   ├── widltypes.h
│   └── write_msft.c
├── wifeman/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── wifeman.c
│   ├── wifeman.def
│   ├── wifeman.dll16.spec
│   └── wifeman.vcxproj
├── win87em/
│   ├── CMakeLists.txt
│   ├── win87em.c
│   ├── win87em.def
│   ├── win87em.dll16.spec
│   ├── win87em.vcxproj
│   └── win87em.vcxproj.filters
├── wine/
│   ├── CMakeLists.txt
│   ├── casemap.c
│   ├── config.c
│   ├── config.h
│   ├── debug.c
│   ├── ldt.c
│   ├── ldt2.c
│   ├── port.h
│   ├── string.c
│   ├── wctype.c
│   ├── windows/
│   │   ├── Makefile.in
│   │   ├── accctrl.h
│   │   ├── access.idl
│   │   ├── aclapi.h
│   │   ├── aclui.h
│   │   ├── activation.idl
│   │   ├── activaut.idl
│   │   ├── activdbg.idl
│   │   ├── activscp.idl
│   │   ├── adshlp.h
│   │   ├── advpub.h
│   │   ├── af_irda.h
│   │   ├── amaudio.h
│   │   ├── amstream.idl
│   │   ├── amvideo.idl
│   │   ├── appcompatapi.h
│   │   ├── appmgmt.h
│   │   ├── appmodel.h
│   │   ├── asptlb.idl
│   │   ├── asynot.idl
│   │   ├── asysta.idl
│   │   ├── atlbase.h
│   │   ├── atlcom.h
│   │   ├── atliface.idl
│   │   ├── atlwin.h
│   │   ├── audevcod.h
│   │   ├── audioclient.idl
│   │   ├── audiopolicy.idl
│   │   ├── audiosessiontypes.h
│   │   ├── austream.idl
│   │   ├── authz.h
│   │   ├── aviriff.h
│   │   ├── avrt.h
│   │   ├── axcore.idl
│   │   ├── axextend.idl
│   │   ├── basetsd.h
│   │   ├── basetyps.h
│   │   ├── bcrypt.h
│   │   ├── bdaiface.idl
│   │   ├── bdaiface_enums.h
│   │   ├── bdatypes.h
│   │   ├── binres.idl
│   │   ├── bits.idl
│   │   ├── bits1_5.idl
│   │   ├── bits2_0.idl
│   │   ├── bits2_5.idl
│   │   ├── bits3_0.idl
│   │   ├── bitsmsg.h
│   │   ├── bluetoothapis.h
│   │   ├── bthsdpdef.h
│   │   ├── cderr.h
│   │   ├── cfgmgr32.h
│   │   ├── cguid.h
│   │   ├── chprst.idl
│   │   ├── cierror.h
│   │   ├── clusapi.h
│   │   ├── cmdbas.idl
│   │   ├── cmdtxt.idl
│   │   ├── cmnquery.idl
│   │   ├── colinf.idl
│   │   ├── comcat.idl
│   │   ├── commctrl.h
│   │   ├── commctrl.rh
│   │   ├── commdlg.h
│   │   ├── commoncontrols.idl
│   │   ├── compobj.h
│   │   ├── comsvcs.idl
│   │   ├── config.h
│   │   ├── config.h.in
│   │   ├── control.idl
│   │   ├── cor.idl
│   │   ├── cordebug.idl
│   │   ├── corerror.h
│   │   ├── corhdr.h
│   │   ├── cpl.h
│   │   ├── crtrow.idl
│   │   ├── cryptdlg.h
│   │   ├── cryptuiapi.h
│   │   ├── ctfutb.idl
│   │   ├── ctxtcall.idl
│   │   ├── custcntl.h
│   │   ├── cvconst.h
│   │   ├── d2d1.idl
│   │   ├── d2d1_1.idl
│   │   ├── d2dbasetypes.h
│   │   ├── d2derr.h
│   │   ├── d3d.h
│   │   ├── d3d10.idl
│   │   ├── d3d10_1.idl
│   │   ├── d3d10_1shader.h
│   │   ├── d3d10effect.h
│   │   ├── d3d10misc.h
│   │   ├── d3d10sdklayers.idl
│   │   ├── d3d10shader.h
│   │   ├── d3d11.idl
│   │   ├── d3d11_1.idl
│   │   ├── d3d11_2.idl
│   │   ├── d3d11_3.idl
│   │   ├── d3d11_4.idl
│   │   ├── d3d11on12.idl
│   │   ├── d3d11sdklayers.idl
│   │   ├── d3d11shader.h
│   │   ├── d3d12.idl
│   │   ├── d3d8.h
│   │   ├── d3d8caps.h
│   │   ├── d3d8types.h
│   │   ├── d3d9.h
│   │   ├── d3d9caps.h
│   │   ├── d3d9types.h
│   │   ├── d3dcaps.h
│   │   ├── d3dcommon.idl
│   │   ├── d3dcompiler.h
│   │   ├── d3dhal.h
│   │   ├── d3drm.h
│   │   ├── d3drmdef.h
│   │   ├── d3drmobj.h
│   │   ├── d3drmwin.h
│   │   ├── d3dtypes.h
│   │   ├── d3dukmdt.h
│   │   ├── d3dvec.inl
│   │   ├── d3dx10.h
│   │   ├── d3dx10async.h
│   │   ├── d3dx10core.idl
│   │   ├── d3dx10math.h
│   │   ├── d3dx10tex.h
│   │   ├── d3dx11.h
│   │   ├── d3dx11async.h
│   │   ├── d3dx11core.idl
│   │   ├── d3dx11tex.h
│   │   ├── d3dx9.h
│   │   ├── d3dx9anim.h
│   │   ├── d3dx9core.h
│   │   ├── d3dx9effect.h
│   │   ├── d3dx9math.h
│   │   ├── d3dx9math.inl
│   │   ├── d3dx9mesh.h
│   │   ├── d3dx9shader.h
│   │   ├── d3dx9shape.h
│   │   ├── d3dx9tex.h
│   │   ├── d3dx9xof.h
│   │   ├── davclnt.h
│   │   ├── dbccmd.idl
│   │   ├── dbcses.idl
│   │   ├── dbdsad.idl
│   │   ├── dbghelp.h
│   │   ├── dbinit.idl
│   │   ├── dbprop.idl
│   │   ├── dbs.idl
│   │   ├── dbt.h
│   │   ├── dciddi.h
│   │   ├── dciman.h
│   │   ├── dcommon.idl
│   │   ├── dde.h
│   │   ├── dde.rh
│   │   ├── ddeml.h
│   │   ├── ddraw.h
│   │   ├── ddrawgdi.h
│   │   ├── ddrawi.h
│   │   ├── ddstream.idl
│   │   ├── delayloadhandler.h
│   │   ├── devenum.idl
│   │   ├── devguid.h
│   │   ├── devicetopology.idl
│   │   ├── devpkey.h
│   │   ├── devpropdef.h
│   │   ├── dhcpcsdk.h
│   │   ├── dhtmldid.h
│   │   ├── dhtmled.idl
│   │   ├── difxapi.h
│   │   ├── digitalv.h
│   │   ├── dimm.idl
│   │   ├── dinput.h
│   │   ├── dinputd.h
│   │   ├── dispdib.h
│   │   ├── dispex.idl
│   │   ├── dlgs.h
│   │   ├── dls1.h
│   │   ├── dls2.h
│   │   ├── dmdls.h
│   │   ├── dmerror.h
│   │   ├── dmksctrl.h
│   │   ├── dmo.h
│   │   ├── dmoreg.h
│   │   ├── dmort.h
│   │   ├── dmplugin.h
│   │   ├── dmusbuff.h
│   │   ├── dmusicc.h
│   │   ├── dmusicf.h
│   │   ├── dmusici.h
│   │   ├── dmusics.h
│   │   ├── docobj.idl
│   │   ├── docobjectservice.idl
│   │   ├── downloadmgr.idl
│   │   ├── dpaddr.h
│   │   ├── dplay.h
│   │   ├── dplay8.h
│   │   ├── dplobby.h
│   │   ├── dplobby8.h
│   │   ├── dpnathlp.h
│   │   ├── drmexternals.idl
│   │   ├── dsconf.h
│   │   ├── dsgetdc.h
│   │   ├── dshow.h
│   │   ├── dsound.h
│   │   ├── dsrole.h
│   │   ├── dvdmedia.h
│   │   ├── dvoice.h
│   │   ├── dwmapi.h
│   │   ├── dwrite.idl
│   │   ├── dwrite_1.idl
│   │   ├── dwrite_2.idl
│   │   ├── dwrite_3.idl
│   │   ├── dxdiag.h
│   │   ├── dxerr8.h
│   │   ├── dxerr9.h
│   │   ├── dxfile.h
│   │   ├── dxgi.idl
│   │   ├── dxgi1_2.idl
│   │   ├── dxgi1_3.idl
│   │   ├── dxgi1_4.idl
│   │   ├── dxgi1_5.idl
│   │   ├── dxgi1_6.idl
│   │   ├── dxgicommon.idl
│   │   ├── dxgiformat.idl
│   │   ├── dxgitype.idl
│   │   ├── dxva2api.idl
│   │   ├── dyngraph.idl
│   │   ├── endpointvolume.idl
│   │   ├── errorrep.h
│   │   ├── errors.h
│   │   ├── errrec.idl
│   │   ├── evcode.h
│   │   ├── evntprov.h
│   │   ├── evntrace.h
│   │   ├── evr.idl
│   │   ├── excpt.h
│   │   ├── exdisp.idl
│   │   ├── exdispid.h
│   │   ├── fci.h
│   │   ├── fdi.h
│   │   ├── fileapi.h
│   │   ├── fltdefs.h
│   │   ├── fontsub.h
│   │   ├── fusion.idl
│   │   ├── gameux.idl
│   │   ├── gdiplus.h
│   │   ├── gdipluscolor.h
│   │   ├── gdipluscolormatrix.h
│   │   ├── gdipluseffects.h
│   │   ├── gdiplusenums.h
│   │   ├── gdiplusflat.h
│   │   ├── gdiplusgpstubs.h
│   │   ├── gdiplusimaging.h
│   │   ├── gdiplusinit.h
│   │   ├── gdiplusmem.h
│   │   ├── gdiplusmetaheader.h
│   │   ├── gdipluspixelformats.h
│   │   ├── gdiplustypes.h
│   │   ├── guiddef.h
│   │   ├── hidusage.h
│   │   ├── highlevelmonitorconfigurationapi.h
│   │   ├── hlguids.h
│   │   ├── hlink.idl
│   │   ├── hstring.idl
│   │   ├── htiface.idl
│   │   ├── htiframe.idl
│   │   ├── htmlhelp.h
│   │   ├── http.h
│   │   ├── httprequest.idl
│   │   ├── httprequestid.h
│   │   ├── i_cryptasn1tls.h
│   │   ├── iads.idl
│   │   ├── icftypes.idl
│   │   ├── icm.h
│   │   ├── icmpapi.h
│   │   ├── idispids.h
│   │   ├── ieautomation.idl
│   │   ├── iextag.idl
│   │   ├── ifdef.h
│   │   ├── ifmib.h
│   │   ├── iimgctx.idl
│   │   ├── imagehlp.h
│   │   ├── ime.h
│   │   ├── imm.h
│   │   ├── imnact.idl
│   │   ├── imnxport.idl
│   │   ├── in6addr.h
│   │   ├── inaddr.h
│   │   ├── indexsrv.idl
│   │   ├── initguid.h
│   │   ├── inputscope.idl
│   │   ├── inseng.idl
│   │   ├── inspectable.idl
│   │   ├── interactioncontext.h
│   │   ├── intshcut.h
│   │   ├── ipexport.h
│   │   ├── iphlpapi.h
│   │   ├── ipifcons.h
│   │   ├── ipmib.h
│   │   ├── iprtrmib.h
│   │   ├── iptypes.h
│   │   ├── isguids.h
│   │   ├── knownfolders.h
│   │   ├── ks.h
│   │   ├── ksguid.h
│   │   ├── ksmedia.h
│   │   ├── ksuuids.h
│   │   ├── libloaderapi.h
│   │   ├── lm.h
│   │   ├── lmaccess.h
│   │   ├── lmapibuf.h
│   │   ├── lmat.h
│   │   ├── lmbrowsr.h
│   │   ├── lmcons.h
│   │   ├── lmerr.h
│   │   ├── lmjoin.h
│   │   ├── lmmsg.h
│   │   ├── lmserver.h
│   │   ├── lmshare.h
│   │   ├── lmstats.h
│   │   ├── lmuse.h
│   │   ├── lmuseflg.h
│   │   ├── lmwksta.h
│   │   ├── loadperf.h
│   │   ├── lowlevelmonitorconfigurationapi.h
│   │   ├── lzexpand.h
│   │   ├── mapi.h
│   │   ├── mapicode.h
│   │   ├── mapidefs.h
│   │   ├── mapiform.h
│   │   ├── mapiguid.h
│   │   ├── mapitags.h
│   │   ├── mapiutil.h
│   │   ├── mapival.h
│   │   ├── mapix.h
│   │   ├── mciavi.h
│   │   ├── mcx.h
│   │   ├── mediaerr.h
│   │   ├── mediaobj.idl
│   │   ├── metahost.idl
│   │   ├── mfapi.h
│   │   ├── mferror.h
│   │   ├── mfidl.idl
│   │   ├── mfobjects.idl
│   │   ├── mfreadwrite.idl
│   │   ├── mftransform.idl
│   │   ├── midles.h
│   │   ├── mimeinfo.idl
│   │   ├── mimeole.idl
│   │   ├── minmax.h
│   │   ├── mlang.idl
│   │   ├── mmc.idl
│   │   ├── mmddk.h
│   │   ├── mmdeviceapi.idl
│   │   ├── mmreg.h
│   │   ├── mmstream.idl
│   │   ├── mmsystem.h
│   │   ├── mprapi.h
│   │   ├── mprerror.h
│   │   ├── msacm.h
│   │   ├── msacmdlg.h
│   │   ├── msacmdrv.h
│   │   ├── msasn1.h
│   │   ├── mscat.h
│   │   ├── mscoree.idl
│   │   ├── msctf.idl
│   │   ├── msdadc.idl
│   │   ├── msdaguid.h
│   │   ├── msdasc.idl
│   │   ├── mshtmcid.h
│   │   ├── mshtmdid.h
│   │   ├── mshtmhst.idl
│   │   ├── mshtml.idl
│   │   ├── msi.h
│   │   ├── msidefs.h
│   │   ├── msident.idl
│   │   ├── msinkaut.idl
│   │   ├── msiquery.h
│   │   ├── msopc.idl
│   │   ├── mssip.h
│   │   ├── msstkppg.h
│   │   ├── mstask.idl
│   │   ├── mstcpip.h
│   │   ├── mswsock.h
│   │   ├── msxml.idl
│   │   ├── msxml2.idl
│   │   ├── msxml2did.h
│   │   ├── msxml6.idl
│   │   ├── msxml6did.h
│   │   ├── msxmldid.h
│   │   ├── mtxdm.h
│   │   ├── multimon.h
│   │   ├── nb30.h
│   │   ├── ncrypt.h
│   │   ├── ndrtypes.h
│   │   ├── netcfgx.idl
│   │   ├── netcon.idl
│   │   ├── netfw.idl
│   │   ├── netioapi.h
│   │   ├── netlistmgr.idl
│   │   ├── nldef.h
│   │   ├── npapi.h
│   │   ├── nserror.h
│   │   ├── nspapi.h
│   │   ├── ntddcdrm.h
│   │   ├── ntddndis.h
│   │   ├── ntddscsi.h
│   │   ├── ntddstor.h
│   │   ├── ntdef.h
│   │   ├── ntdsapi.h
│   │   ├── ntlsa.h
│   │   ├── ntquery.h
│   │   ├── ntsecapi.h
│   │   ├── ntsecpkg.h
│   │   ├── ntstatus.h
│   │   ├── oaidl.idl
│   │   ├── objbase.h
│   │   ├── objectarray.idl
│   │   ├── objidl.idl
│   │   ├── objsafe.idl
│   │   ├── objsel.h
│   │   ├── ocidl.idl
│   │   ├── ocmm.idl
│   │   ├── odbcinst.h
│   │   ├── ole2.h
│   │   ├── ole2ver.h
│   │   ├── oleacc.idl
│   │   ├── oleauto.h
│   │   ├── olectl.h
│   │   ├── oledb.idl
│   │   ├── oledberr.h
│   │   ├── oledlg.h
│   │   ├── oleidl.idl
│   │   ├── opcbase.idl
│   │   ├── opcobjectmodel.idl
│   │   ├── opcparturi.idl
│   │   ├── opnrst.idl
│   │   ├── optary.idl
│   │   ├── patchapi.h
│   │   ├── pathcch.h
│   │   ├── pdh.h
│   │   ├── pdhmsg.h
│   │   ├── perflib.h
│   │   ├── perhist.idl
│   │   ├── physicalmonitorenumerationapi.h
│   │   ├── pktdef.h
│   │   ├── poppack.h
│   │   ├── powrprof.h
│   │   ├── prntvpt.h
│   │   ├── profinfo.h
│   │   ├── propidl.idl
│   │   ├── propkey.h
│   │   ├── propkeydef.h
│   │   ├── propsys.idl
│   │   ├── propvarutil.h
│   │   ├── prsht.h
│   │   ├── psapi.h
│   │   ├── pshpack1.h
│   │   ├── pshpack2.h
│   │   ├── pshpack4.h
│   │   ├── pshpack8.h
│   │   ├── pstore.idl
│   │   ├── qedit.idl
│   │   ├── ras.h
│   │   ├── rasdlg.h
│   │   ├── raserror.h
│   │   ├── reason.h
│   │   ├── regstr.h
│   │   ├── restartmanager.h
│   │   ├── richedit.h
│   │   ├── richole.idl
│   │   ├── rmxfguid.h
│   │   ├── rmxftmpl.x
│   │   ├── roapi.h
│   │   ├── roparameterizediid.idl
│   │   ├── row.idl
│   │   ├── rowchg.idl
│   │   ├── rowpos.idl
│   │   ├── rowpsc.idl
│   │   ├── rpc.h
│   │   ├── rpcasync.h
│   │   ├── rpcdce.h
│   │   ├── rpcdcep.h
│   │   ├── rpcndr.h
│   │   ├── rpcnterr.h
│   │   ├── rpcproxy.h
│   │   ├── rpcsal.h
│   │   ├── rstbas.idl
│   │   ├── rstinf.idl
│   │   ├── rstloc.idl
│   │   ├── rstnot.idl
│   │   ├── rtutils.h
│   │   ├── sal.h
│   │   ├── sapi.idl
│   │   ├── sapiddk.idl
│   │   ├── scarderr.h
│   │   ├── schannel.h
│   │   ├── schemadef.h
│   │   ├── schnlsp.h
│   │   ├── sddl.h
│   │   ├── secext.h
│   │   ├── security.h
│   │   ├── sensapi.h
│   │   ├── sensevts.idl
│   │   ├── servprov.idl
│   │   ├── sesprp.idl
│   │   ├── setupapi.h
│   │   ├── sfc.h
│   │   ├── shdeprecated.idl
│   │   ├── shdispid.h
│   │   ├── shellapi.h
│   │   ├── shellscalingapi.h
│   │   ├── shimgdata.idl
│   │   ├── shldisp.idl
│   │   ├── shlguid.h
│   │   ├── shlobj.h
│   │   ├── shlwapi.h
│   │   ├── shobjidl.idl
│   │   ├── shtypes.idl
│   │   ├── sipbase.h
│   │   ├── slerror.h
│   │   ├── slpublic.h
│   │   ├── snmp.h
│   │   ├── softpub.h
│   │   ├── sperror.h
│   │   ├── sql.h
│   │   ├── sqlext.h
│   │   ├── sqltypes.h
│   │   ├── sqlucode.h
│   │   ├── srcrst.idl
│   │   ├── srrestoreptapi.h
│   │   ├── sspi.h
│   │   ├── stamp-h
│   │   ├── stamp-h.in
│   │   ├── stdole2.idl
│   │   ├── stgprop.h
│   │   ├── sti.h
│   │   ├── storage.h
│   │   ├── strmif.idl
│   │   ├── strsafe.h
│   │   ├── structuredquerycondition.idl
│   │   ├── svrapi.h
│   │   ├── t2embapi.h
│   │   ├── tapi.h
│   │   ├── taskschd.idl
│   │   ├── tchar.h
│   │   ├── tcpestats.h
│   │   ├── tcpmib.h
│   │   ├── textserv.h
│   │   ├── textstor.idl
│   │   ├── tlhelp32.h
│   │   ├── tlogstg.idl
│   │   ├── tmschema.h
│   │   ├── tom.idl
│   │   ├── traffic.h
│   │   ├── transact.idl
│   │   ├── twain.h
│   │   ├── txcoord.idl
│   │   ├── txdtc.idl
│   │   ├── udpmib.h
│   │   ├── uianimation.idl
│   │   ├── uiautomation.h
│   │   ├── uiautomationclient.idl
│   │   ├── uiautomationcore.idl
│   │   ├── uiautomationcoreapi.h
│   │   ├── uiribbon.idl
│   │   ├── unknwn.idl
│   │   ├── urlhist.idl
│   │   ├── urlmon.idl
│   │   ├── userenv.h
│   │   ├── usp10.h
│   │   ├── uuids.h
│   │   ├── uxtheme.h
│   │   ├── vdmdbg.h
│   │   ├── ver.h
│   │   ├── verrsrc.h
│   │   ├── vfw.h
│   │   ├── vfwmsgs.h
│   │   ├── virtdisk.h
│   │   ├── vmr9.idl
│   │   ├── vmrender.idl
│   │   ├── vss.idl
│   │   ├── vsstyle.h
│   │   ├── vssym32.h
│   │   ├── vswriter.h
│   │   ├── wbemcli.idl
│   │   ├── wbemdisp.idl
│   │   ├── wbemprov.idl
│   │   ├── wct.h
│   │   ├── webservices.h
│   │   ├── werapi.h
│   │   ├── wfext.h
│   │   ├── wia.h
│   │   ├── wia_lh.idl
│   │   ├── wia_xp.idl
│   │   ├── wiadef.h
│   │   ├── wimgapi.h
│   │   ├── winbase.h
│   │   ├── wincodec.idl
│   │   ├── wincodecsdk.idl
│   │   ├── wincon.h
│   │   ├── wincred.h
│   │   ├── wincrypt.h
│   │   ├── windef.h
│   │   ├── windns.h
│   │   ├── windows.foundation.idl
│   │   ├── windows.h
│   │   ├── windowsx.h
│   │   ├── winerror.h
│   │   ├── winevt.h
│   │   ├── wingdi.h
│   │   ├── winhttp.h
│   │   ├── wininet.h
│   │   ├── winineti.h
│   │   ├── winioctl.h
│   │   ├── winldap.h
│   │   ├── winnetwk.h
│   │   ├── winnls.h
│   │   ├── winnls32.h
│   │   ├── winnt.h
│   │   ├── winnt.rh
│   │   ├── winperf.h
│   │   ├── winreg.h
│   │   ├── winresrc.h
│   │   ├── winsafer.h
│   │   ├── winscard.h
│   │   ├── winsmcrd.h
│   │   ├── winsnmp.h
│   │   ├── winsock.h
│   │   ├── winsock2.h
│   │   ├── winspool.h
│   │   ├── winstring.h
│   │   ├── winsvc.h
│   │   ├── winsxs.idl
│   │   ├── wintab.h
│   │   ├── wintabx.h
│   │   ├── winternl.h
│   │   ├── wintrust.h
│   │   ├── winuser.h
│   │   ├── winuser.rh
│   │   ├── winver.h
│   │   ├── wlanapi.h
│   │   ├── wmcodecdsp.idl
│   │   ├── wmdrmsdk.idl
│   │   ├── wmistr.h
│   │   ├── wmium.h
│   │   ├── wmiutils.idl
│   │   ├── wmp.idl
│   │   ├── wmpids.h
│   │   ├── wmsbuffer.idl
│   │   ├── wmsdk.h
│   │   ├── wmsdkidl.idl
│   │   ├── wnaspi32.h
│   │   ├── wownt32.h
│   │   ├── wpcapi.idl
│   │   ├── ws2def.h
│   │   ├── ws2ipdef.h
│   │   ├── ws2spi.h
│   │   ├── ws2tcpip.h
│   │   ├── wsdapi.h
│   │   ├── wsdbase.idl
│   │   ├── wsddisco.idl
│   │   ├── wsdtypes.h
│   │   ├── wsdutil.h
│   │   ├── wsdxml.idl
│   │   ├── wsdxmldom.h
│   │   ├── wshisotp.h
│   │   ├── wsipx.h
│   │   ├── wsnwlink.h
│   │   ├── wtsapi32.h
│   │   ├── wtypes.idl
│   │   ├── wuapi.idl
│   │   ├── x3daudio.h
│   │   ├── xapo.idl
│   │   ├── xapofx.h
│   │   ├── xaudio2.idl
│   │   ├── xaudio2fx.idl
│   │   ├── xcmc.h
│   │   ├── xinput.h
│   │   ├── xmldom.h
│   │   ├── xmldom.idl
│   │   ├── xmldomdid.h
│   │   ├── xmldso.idl
│   │   ├── xmldsodid.h
│   │   ├── xmllite.idl
│   │   └── zmouse.h
│   ├── wine/
│   │   ├── config.h
│   │   ├── debug.h
│   │   ├── exception.h
│   │   ├── heap.h
│   │   ├── library.h
│   │   ├── list.h
│   │   ├── mmsystem16.h
│   │   ├── port.h
│   │   ├── server.h
│   │   ├── server_protocol.h
│   │   ├── unicode.h
│   │   ├── winaspi.h
│   │   ├── winbase16.h
│   │   ├── windef16.h
│   │   ├── wine_common_ver.rc
│   │   ├── wingdi16.h
│   │   ├── winnet16.h
│   │   ├── winuser16.h
│   │   └── wpp.h
│   ├── wine.def
│   ├── wine.vcxproj
│   ├── wine.vcxproj.filters
│   └── winuser.rh
├── winecrt0/
│   ├── CMakeLists.txt
│   ├── crt0_private.h
│   ├── dll_entry.c
│   ├── exception.c
│   ├── exe16_entry.c
│   ├── init.c
│   ├── stub.c
│   ├── winecrt0.vcxproj
│   └── winecrt0.vcxproj.filters
├── wing/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── wing.c
│   ├── wing.def
│   ├── wing.dll16.spec
│   └── wing.vcxproj
├── winhlp32/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── REOLEStorage1
│   ├── callback.c
│   ├── hlpfile.c
│   ├── hlpfile.h
│   ├── macro.c
│   ├── macro.h
│   ├── macro.lex.l
│   ├── string.c
│   ├── tom.h
│   ├── winhelp.c
│   ├── winhelp.h
│   ├── winhelp_res.h
│   ├── winhlp32.rc
│   ├── winhlp32.vcxproj
│   └── winhlp32.vcxproj.filters
├── winnls/
│   ├── CMakeLists.txt
│   ├── winnls.c
│   ├── winnls.def
│   ├── winnls.dll16.spec
│   ├── winnls.vcxproj
│   └── winnls.vcxproj.filters
├── winoldap/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── winoldap.c
│   ├── winoldap.def
│   ├── winoldap.mod16.spec
│   └── winoldap.vcxproj
├── winsock/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── socket.c
│   ├── winsock.def
│   ├── winsock.dll16.spec
│   ├── winsock.vcxproj
│   └── winsock16.h
├── winspool/
│   ├── CMakeLists.txt
│   ├── winspool.c
│   ├── winspool.def
│   ├── winspool.drv16.spec
│   └── winspool.vcxproj
├── wow32/
│   ├── CMakeLists.txt
│   ├── wow32.def
│   ├── wow32.spec
│   ├── wow32.vcxproj
│   ├── wow32.vcxproj.filters
│   ├── wow_main.c
│   └── wownt32.h
└── wpp/
    ├── CMakeLists.txt
    ├── ppl.l
    ├── ppy.y
    ├── preproc.c
    ├── wpp.c
    ├── wpp.vcxproj
    └── wpp_private.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

*.reg text eol=crlf
*.ini text eol=crlf
README.md text eol=crlf


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

Try the latest version first.
Go [here](https://ci.appveyor.com/project/otya128/winevdm) and click `Environment: THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD=1`-> `Artifacts 1`-> `zip` to download the latest version.


**Describe the bug**
A clear and concise description of what the bug is.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment (please complete the following information):**
 - OS: [e.g. Windows 10 1903]
 - Version [e.g. version: 1523]

**Additional context**
Add any other context about the problem here.


It is very helpful to provide a trace file if possible.
Please note that this file contains detailed information about the program.
**Procedure**
1. Run the command prompt.
2. Set the environment variable:
```cmd
set WINEDEBUG=+all,-snoop,-ldt,-fixup,-module,-global,-local,-disasm,-syslevel,-thunk
```
3.
```cmd
*old-executable-file* 2> trace.txt
```
4. Upload trace.txt here.


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
w[Dd]ebug/
x64/
build/
bld/
[Bb]in/
[Oo]bj/

# Roslyn cache directories
*.ide/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding addin-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
## TODO: Comment the next line if you want to checkin your
## web deploy settings but do note that will include unencrypted
## passwords
#*.pubxml

# NuGet Packages Directory
packages/*
## TODO: If the tool you use requires repositories.config
## uncomment the next line
#!packages/repositories.config

# Enable "build/" folder in the NuGet Packages folder since
# NuGet packages use it for MSBuild targets.
# This line needs to be after the ignore of the build folder
# (and the packages folder if the line above has been uncommented)
!packages/build/

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml
*.db
*.opendb
*.tlog
/.vs
*16.asm
*.i


================================================
FILE: BuildToolProperty.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <!-- BisonPath should point the directory containing bison.exe -->
    <BisonPath>$(AsmPath)</BisonPath>
    <!-- FlexPath should point the directory containing flex.exe -->
    <FlexPath>$(AsmPath)</FlexPath>
  </PropertyGroup>
  <PropertyGroup>
    <_PropertySheetDisplayName>BuildToolProperty</_PropertySheetDisplayName>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup>
    <BuildMacro Include="BisonPath">
      <Value>$(BisonPath)</Value>
    </BuildMacro>
    <BuildMacro Include="FlexPath">
      <Value>$(FlexPath)</Value>
    </BuildMacro>
  </ItemGroup>
</Project>


================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.10.2)
#-Dinline=__inline
project(winevdm)
set(ASM_TOOL_DIR )
# prevent wine error
if (NOT(MSVC))
    string(APPEND CMAKE_CXX_FLAGS " -Wno-narrowing ")
else()
    add_definitions(-DUSE_COMPILER_EXCEPTIONS -Dinline=__inline)
endif()

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
macro(def_file_build32 file)
    get_filename_component(name_we ${file} NAME_WE)
    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def
    DEPENDS ${file}.spec convspec
    COMMAND convspec ${CMAKE_CURRENT_LIST_DIR}/${file}.spec -DEF -32 > ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def)
    add_custom_target(generate_def_${name_we} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def)
endmacro()
macro(def_file_build file)
    get_filename_component(name_we ${file} NAME_WE)
    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def
    DEPENDS ${file}.spec convspec
    COMMAND convspec ${CMAKE_CURRENT_LIST_DIR}/${file}.spec -DEF > ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def)
    add_custom_target(generate_def_${name_we} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name_we}.def)
endmacro()
macro(spec_build file modname)
    string(TOUPPER modname modname)
    get_filename_component(name_we ${file} NAME_WE)
    cmake_parse_arguments(SPEC_BUILD "" "" "ARG" ${ARGN})
    add_custom_command(OUTPUT ${file}.obj ${file}.asm
    DEPENDS ${file}.spec convspec
    COMMAND convspec ${CMAKE_CURRENT_LIST_DIR}/${file}.spec ${SPEC_BUILD_ARG} ${modname} > ${file}.asm && ${ASM_TOOL_DIR}as --32 -o ${file}.obj ${file}.asm)
    add_custom_target(generate_asm_${name_we} DEPENDS ${file}.obj)
    if (MSVC)
        set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
    endif()
    def_file_build(${file})
    add_dependencies(${name_we} generate_asm_${name_we})
    add_dependencies(${name_we} generate_def_${name_we})
    set_target_properties(${name_we} PROPERTIES PREFIX "")
endmacro()
macro(widl_build file_idl file_c file_h)
    get_filename_component(name_we ${file_idl} NAME_WE)
    add_custom_command(OUTPUT ${file_c} ${file_h}
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${file_idl} widl
    COMMAND $<TARGET_FILE_DIR:widl>/widl.exe ${CMAKE_CURRENT_SOURCE_DIR}/${file_idl} -o ${file_c} && $<TARGET_FILE_DIR:widl>/widl.exe ${CMAKE_CURRENT_SOURCE_DIR}/${file_idl} -o ${file_h}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    add_custom_target(generate_ifs_${name_we} DEPENDS ${file_c} ${file_h})
endmacro()

INCLUDE(CheckIncludeFiles)
CHECK_INCLUDE_FILES(WinHvPlatform.h HAVE_WINHVPLATFORM_H)

include_directories(BEFORE wow32)
find_package(BISON)
find_package(FLEX)

add_subdirectory(wine)
add_subdirectory(convspec)
add_subdirectory(winecrt0)
add_subdirectory(wow32)
add_subdirectory(krnl386)
add_subdirectory(user)
add_subdirectory(gdi)
add_subdirectory(win87em)
add_subdirectory(shell)
add_subdirectory(vm86)
add_subdirectory(avifile)
add_subdirectory(comm)
add_subdirectory(commctrl)
add_subdirectory(commdlg)
add_subdirectory(compobj)
add_subdirectory(ctl3d)
add_subdirectory(ctl3dv2)
add_subdirectory(ddeml)
add_subdirectory(dispdib)
add_subdirectory(display)
add_subdirectory(haxmvm)
add_subdirectory(keyboard)
add_subdirectory(lzexpand)
add_subdirectory(mmsystem)
add_subdirectory(mouse)
add_subdirectory(msacm)
add_subdirectory(msvideo)
add_subdirectory(nddeapi)
add_subdirectory(ole2)
add_subdirectory(ole2conv)
add_subdirectory(ole2disp)
add_subdirectory(ole2nls)
add_subdirectory(ole2prox)
add_subdirectory(ole2thk)
add_subdirectory(olecli)
add_subdirectory(olesvr)
add_subdirectory(regedit)
add_subdirectory(rmpatch)
add_subdirectory(sound)
add_subdirectory(storage)
add_subdirectory(system)
add_subdirectory(timer)
add_subdirectory(toolhelp)
add_subdirectory(typelib)
add_subdirectory(ver)
add_subdirectory(widl)
add_subdirectory(wifeman)
add_subdirectory(wing)
add_subdirectory(winhlp32)
add_subdirectory(winnls)
add_subdirectory(winoldap)
add_subdirectory(winsock)
add_subdirectory(winspool)
add_subdirectory(wpp)
add_subdirectory(otvdm)
add_subdirectory(gvm)
add_subdirectory(ntvdm)
if (HAVE_WINHVPLATFORM_H)
  add_subdirectory(whpxvm)
endif()


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: PropertySheet.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <!-- AsmPath should point the directory containing as.exe(binutils), bison.exe and flex.exe -->
    <AsmPath>C:\msys32\usr\bin\</AsmPath>
  </PropertyGroup>
  <PropertyGroup>
    <_PropertySheetDisplayName>MacroPropertySheet</_PropertySheetDisplayName>
    <IncludePath>$(SolutionDir)wow32;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup>
    <BuildMacro Include="AsmPath">
      <Value>$(AsmPath)</Value>
    </BuildMacro>
  </ItemGroup>
</Project>

================================================
FILE: README.md
================================================
# winevdm on 64-bit Windows

![screenshot](screenshot.PNG)

[Download stable version](https://github.com/otya128/winevdm/releases)

[Download latest version (unstable)](https://ci.appveyor.com/project/otya128/winevdm/)

16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows

An altered version of winevdm (a 16-bit Windows emulator), ported to 64-bit Windows.

# How to run

+ If you get an error that VCRUNTIME140.dll is missing, install [Microsoft Visual C++ Redistributable for Visual Studio 2017 (32-bit)](https://aka.ms/vs/15/release/vc_redist.x86.exe)
+ Drag and drop Win16 executable file to otvdm.exe or execute otvdmw.exe.

# How to install

+ Download or compile
+ Run "install" shortcut or right-click on install.inf and select "Install"
+ You can execute Win16 binaries directly!

If the registry is initialized by Windows Update, perform the above procedure again.

You can uninstall it by running uninstall.reg.

# Configuration

See [otvdm.ini](otvdm.ini).

# How to compile(Visual Studio)

+ Install Visual Studio 2017
+ Edit PropertySheet.props
+ Compile

# How to compile(cmake)

```sh
git clone https://github.com/otya128/winevdm.git
cd winevdm
mkdir build
cd build
cmake ..
make
```

# How does it work?

This program contains the following items

+ CPU Emulator
  + 64-bit Windows cannot modify LDT(NtSetInformationProcess(,ProcessLdtInformation,,) always returns error)
+ wine based Win16->Win32 conversion codes:
  ```c
  BOOL16 WINAPI DestroyWindow16( HWND16 hwnd )
  {
      return DestroyWindow( WIN_Handle32(hwnd) );
  }
  ```
  Relay routines from 16-bit to 32-bit are autogenerated by convspec
  ```spec
  53  pascal -ret16 DestroyWindow(word) DestroyWindow16
  ```
+ DOS emulation for Win16
+ 16-bit <=> native HANDLE conversion
+ Fix compatibility problems, fix compatibility problems

## install.inf

When 64-bit Windows detects a 16-bit installer, it has a mechanism to start an alternative installer which is not 16-bit.
This program uses it.

## WINDOWS directory redirection

Some Win16 programs try to save their settings in %WINDIR%\<filename>.ini

In recent Windows, it is not allowed to save to %WINDIR%, so it redirects.

# winevdm
```bat
winevdm.exe [--app-name app.exe] command line
winevdm.exe CALC.EXE
```
It can also run DOS executables (DOS emulator-like).
You can set the DOS version with the VDMDOSVER environment variable.

DOS emulation is incomplete and it is recommended to use DOSBox or [MS-DOS Player](http://takeda-toshiya.my.coocan.jp/msdos/).


================================================
FILE: READMEJP.md
================================================
# winevdm on windows(64bit)
<img src="screenshot.PNG">

[Download](https://github.com/otya128/winevdm/releases)

winevdm on windows(64bit)
16bit用Windowsのプログラムを動かすプログラム
winevdmの移植版
# コンパイルに必要そうなもの
+ VC++
+ gas

# winevdm
```bat
winevdm.exe [--app-name app.exe] command line

winevdm.exe CALC.EXE
```
DOS実行ファイルを実行することも可能(ただしDOSエミュレータは他に存在するためそれを使った方が確実)
VDMDOSVER環境変数を設定するとDOSのバージョンを指定できる
# convspec
convert wine spec file
winebuildから必要な部分を取り出しVC++で動かせるようにし、関数名の扱いなどを変え出力されたassemblyをVC++で扱えるようにした
```bat
convspec .specfile modulename > asm
convspec .specfile -DEF > def

convspec commdlg.dll16.spec COMMDLG > commdlg.dll16.asm
convspec commdlg.dll16.spec -DEF > commdlg.def
as --32 -o commdlg.dll16.obj commdlg.dll16.asm
```
# gdi
GDI.EXE
# krnl386
KRNL386.EXE
# user
USER.EXE
# vm86
CPU emulator
# wine
libwine
# wow32
wow32.dll


================================================
FILE: appveyor.yml
================================================
version: dev{build}
image: Visual Studio 2017
configuration: Release
environment:
  matrix:
  - THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD: 1
  - THIS_BUILD_IS_NOT_RECOMMENDED__GCC_CMAKE_BUILD: 1
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
build:
  parallel: true
  verbosity: quiet

for:
-
  matrix:
    only:
      - THIS_BUILD_IS_NOT_RECOMMENDED__GCC_CMAKE_BUILD: 1
  build_script:
   ps: |
     mkdir build
     cd build
     $env:MSYSTEM = "MINGW32"
     $env:MSYSTEM_CARCH = "i686"
     $env:MSYSTEM_CHOST = "i686-w64-mingw32"
     $env:MSYSTEM_PREFIX = "C:/msys64/mingw32"
     $env:Path = "C:\msys64\mingw32\bin;C:\msys64\usr\local\bin;C:\msys64\usr\bin;" + $env:Path
     cmake -G"MSYS Makefiles" .. -DCMAKE_CXX_FLAGS=-w -DCMAKE_C_FLAGS=-w
     if (0 -ne $LastExitCode)
     {
         throw "Failed to execute cmake"
     }
     make -j 2
     if (0 -ne $LastExitCode)
     {
         throw "Failed to execute make"
     }
     mkdir otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}
     ..\tools\package.ps1 -root ..\ -src .\ -dst otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER} -objcopy "C:\msys64\usr\bin\objcopy.exe" -as "as.exe" -dll otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}
     copy C:\msys64\mingw32\bin\libgcc_s_dw2-1.dll otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}\
     copy C:\msys64\mingw32\bin\libstdc++-6.dll otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}\
     copy C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin\libwinpthread-1.dll otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}\
     7z a ..\otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}.zip otvdm-cmake-gcc-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}

-
  matrix:
    only:
      - THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD: 1
  before_build:
    ps: |
      C:\msys64\usr\bin\as --version
      echo "<?xml version=""1.0"" encoding=""utf-8""?>
      <Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
        <ImportGroup Label=""PropertySheets"" />
        <PropertyGroup Label=""UserMacros"">
          <AsmPath>C:\msys64\usr\bin\</AsmPath>
          <NtDllLibPath>`$(UniversalCRTSdkDir)Lib\10.0.17134.0\um\x86\</NtDllLibPath>
        </PropertyGroup>
        <PropertyGroup>
          <_PropertySheetDisplayName>MacroPropertySheet</_PropertySheetDisplayName>
          <IncludePath>`$(SolutionDir)wow32;`$(IncludePath)</IncludePath>
        </PropertyGroup>
        <ItemDefinitionGroup>
          <ClCompile>
            <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
            <PreprocessorDefinitions>__CI_VERSION=${env:APPVEYOR_BUILD_NUMBER};%(PreprocessorDefinitions)</PreprocessorDefinitions>
            <WarningLevel>TurnOffAllWarnings</WarningLevel>
          </ClCompile>
        </ItemDefinitionGroup>
        <ItemGroup>
          <BuildMacro Include=""AsmPath"">
            <Value>`$(AsmPath)</Value>
          </BuildMacro>
          <BuildMacro Include=""NtDllLibPath"">
            <Value>`$(NtDllLibPath)</Value>
          </BuildMacro>
        </ItemGroup>
      </Project>
      " > C:\projects\winevdm\PropertySheet.props

  before_package:
    ps: |
      .\tools\package.ps1 -root .\ -src Release -dst otvdm-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER} -objcopy "C:\msys64\usr\bin\objcopy.exe" -as "C:\msys64\usr\bin\as.exe"
      7z a otvdm-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}.zip otvdm-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_BUILD_NUMBER}

artifacts:
- path: '*.zip'
  name: otvdm-Debug


================================================
FILE: avifile/CMakeLists.txt
================================================
file(GLOB SOURCE *.c *.cpp *.rc)
add_library(avifile SHARED ${SOURCE} ${CMAKE_SOURCE_DIR}/dummy.c ${CMAKE_CURRENT_BINARY_DIR}/avifile.def avifile.dll16.obj)
include_directories(../wine)
add_definitions(-D_X86_ -D__WINESRC__ -D__i386__ -DHAVE_STRNCASECMP -DHAVE__STRNICMP -D_WINTERNL_ -DNtCurrentTeb=NtCurrentTeb__ -DDECLSPEC_HIDDEN= -Dstrncasecmp=_strnicmp)
spec_build(avifile.dll16 avifile)
target_link_libraries(avifile libwine winecrt0 krnl386 avifil32.lib)
set_target_properties(avifile PROPERTIES SUFFIX ".dll16")


================================================
FILE: avifile/Makefile.in
================================================
MODULE    = avifile.dll16
IMPORTS   = avifil32
EXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll


================================================
FILE: avifile/avifile.def
================================================
; File generated automatically from avifile\avifile.dll16.spec; do not edit!

LIBRARY avifile.dll16

EXPORTS
  _wine_spec_dos_header @1 DATA


================================================
FILE: avifile/avifile.dll16.spec
================================================
# I'm just using "long" instead of "ptr" for the interface pointers,
# because they are 32-bit pointers, not converted to 16-bit format,
# but the app doesn't really need to know, it should never need to
# dereference the interface pointer itself (if we're lucky)...

#1   stub     WEP
2   stub     DLLGETCLASSOBJECT
3   stub     DLLCANUNLOADNOW
4   stub     ___EXPORTEDSTUB
10  variable _IID_IAVIStream(0x00020021 0x00000000 0x000000c0 0x46000000)
11  variable _IID_IAVIFile(0x00020020 0x00000000 0x000000c0 0x46000000)
12  variable _IID_IAVIEditStream(0x00020024 0x00000000 0x000000c0 0x46000000)
13  variable _IID_IGetFrame(0x00020023 0x00000000 0x000000c0 0x46000000)
14  variable _CLSID_AVISimpleUnMarshal(0x00020009 0x00000000 0x000000c0 0x46000000)
100 pascal   AVIFileInit() AVIFileInit
101 pascal   AVIFileExit() AVIFileExit
102 pascal   AVIFileOpen(ptr str word ptr) AVIFileOpenA
103 pascal   AVIStreamOpenFromFile(ptr str long long word ptr) AVIStreamOpenFromFileA
104 pascal   AVIStreamCreate(ptr long long ptr) AVIStreamCreate
105 stub     AVIMAKECOMPRESSEDSTREAM
106 stub     AVIMAKEFILEFROMSTREAMS
107 stub     AVIMAKESTREAMFROMCLIPBOARD
110 pascal   AVIStreamGetFrame(long long) AVIStreamGetFrame16
111 pascal   AVIStreamGetFrameClose(long) AVIStreamGetFrameClose16
112 pascal   AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen16
120 stub     _AVISAVE
121 stub     AVISAVEV
122 stub     AVISAVEOPTIONS
123 pascal   AVIBuildFilter(str long word) AVIBuildFilterA
124 pascal   AVISaveOptionsFree(word ptr) AVISaveOptionsFree
130 pascal   AVIStreamStart(long) AVIStreamStart
131 pascal   AVIStreamLength(long) AVIStreamLength
132 pascal   AVIStreamTimeToSample(long long) AVIStreamTimeToSample
133 pascal   AVIStreamSampleToTime(long long) AVIStreamSampleToTime
140 pascal   AVIFileAddRef(long) AVIFileAddRef
141 pascal   AVIFileRelease(long) AVIFileRelease
142 pascal   AVIFileInfo(long ptr long) AVIFileInfoA
143 pascal   AVIFileGetStream(long ptr long long) AVIFileGetStream
144 pascal   AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16
146 pascal   AVIFileWriteData(long long ptr long) AVIFileWriteData
147 pascal   AVIFileReadData(long long ptr ptr) AVIFileReadData
148 pascal   AVIFileEndRecord(long) AVIFileEndRecord
160 pascal   AVIStreamAddRef(long) AVIStreamAddRef
161 pascal   AVIStreamRelease(long) AVIStreamRelease
162 pascal   AVIStreamInfo(long ptr long) AVIStreamInfo16
163 pascal   AVIStreamFindSample(long long long) AVIStreamFindSample
164 pascal   AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat
165 pascal   AVIStreamReadData(long long ptr ptr) AVIStreamReadData
166 pascal   AVIStreamWriteData(long long ptr long) AVIStreamWriteData
167 pascal   AVIStreamRead(long long long ptr long ptr ptr) AVIStreamRead
168 pascal   AVIStreamWrite(long long long ptr long long ptr ptr) AVIStreamWrite
169 pascal   AVIStreamSetFormat(long long ptr long) AVIStreamSetFormat
180 stub     EDITSTREAMCOPY
181 stub     EDITSTREAMCUT
182 stub     EDITSTREAMPASTE
184 stub     CREATEEDITABLESTREAM
185 stub     AVIPUTFILEONCLIPBOARD
187 stub     AVIGETFROMCLIPBOARD
188 stub     AVICLEARCLIPBOARD
190 stub     EDITSTREAMCLONE
191 stub     EDITSTREAMSETNAME
192 stub     EDITSTREAMSETINFO
200 stub     AVISTREAMBEGINSTREAMING
201 stub     AVISTREAMENDSTREAMING


================================================
FILE: avifile/avifile.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <Keyword>Win32Proj</Keyword>
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
    <RootNamespace>avifile</RootNamespace>
    <ProjectGuid>{3825B17A-681F-48CF-B9AD-5337B1F521C8}</ProjectGuid>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <Import Project="..\PropertySheet.props" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <IntDir>Release</IntDir>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
avifil32.lib</AdditionalDependencies>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ModuleDefinitionFile>
avifile.def
      </ModuleDefinitionFile>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;DECLSPEC_HIDDEN=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
      <ModuleDefinitionFile>
avifile.def
      </ModuleDefinitionFile>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
avifil32.lib</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="main.c" />
  </ItemGroup>
  <ItemGroup>
    <Object Include="avifile.dll16.obj" />
  </ItemGroup>
  <ItemGroup>
    <CustomBuild Include="avifile.dll16.spec">
      <FileType>Document</FileType>
      <Command Condition="'$(Platform)'=='Win32'">"$(OutDir)convspec" "%(Filename).spec" AVIFILE &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Platform)'=='Win32'">%(Filename).obj</Outputs>
    </CustomBuild>
  </ItemGroup>
  <ItemGroup>
    <None Include="avifile.def" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>


================================================
FILE: avifile/main.c
================================================
/*
 * Wrapper for 16 bit avifile functions
 *
 * Copyright 2016 Michael Müller
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "wine/winbase16.h"
#include "winternl.h"
#include "wingdi.h"
#include "vfw.h"

typedef struct _AVISTREAMINFO16 {
    DWORD   fccType;
    DWORD   fccHandler;
    DWORD   dwFlags;
    DWORD   dwCaps;
    WORD    wPriority;
    WORD    wLanguage;
    DWORD   dwScale;
    DWORD   dwRate;
    DWORD   dwStart;
    DWORD   dwLength;
    DWORD   dwInitialFrames;
    DWORD   dwSuggestedBufferSize;
    DWORD   dwQuality;
    DWORD   dwSampleSize;
    RECT16  rcFrame;
    DWORD   dwEditCount;
    DWORD   dwFormatChangeCount;
    CHAR    szName[64];
} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16;

struct frame_wrapper16
{
    PGETFRAME pg;
    PVOID ptr;
    DWORD size;
    WORD sel;
    WORD count;
};

static void free_segptr_frame(struct frame_wrapper16 *wrapper)
{
    int i;

    if (!wrapper->sel)
        return;

    for (i = 0; i < wrapper->count; i++)
        FreeSelector16(wrapper->sel + (i << __AHSHIFT));

    wrapper->sel = 0;
}

static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *ptr, DWORD size)
{
    int i;

    if (wrapper->sel)
    {
        if (wrapper->ptr == ptr && wrapper->size == size)
            return MAKESEGPTR(wrapper->sel, 0);
        free_segptr_frame(wrapper);
    }

    wrapper->ptr    = ptr;
    wrapper->size   = size;
    wrapper->count  = (size + 0xffff) / 0x10000;
    wrapper->sel    = AllocSelectorArray16(wrapper->count);
    if (!wrapper->sel)
        return 0;

    for (i = 0; i < wrapper->count; i++)
    {
        SetSelectorBase(wrapper->sel + (i << __AHSHIFT), (DWORD)ptr + i * 0x10000);
        SetSelectorLimit16(wrapper->sel + (i << __AHSHIFT), size - 1);
        size -= 0x10000;
    }

    return MAKESEGPTR(wrapper->sel, 0);
}

/***********************************************************************
 *      AVIStreamGetFrameOpen   (AVIFILE.112)
 */
PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINFOHEADER lpbiWanted)
{
    struct frame_wrapper16 *wrapper;
    PGETFRAME pg;

    pg = AVIStreamGetFrameOpen(pstream, lpbiWanted);
    if (!pg) return NULL;

    wrapper = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wrapper));
    if (!wrapper)
    {
        AVIStreamGetFrameClose(pg);
        return NULL;
    }

    wrapper->pg = pg;
    return (PGETFRAME)wrapper;
}

/***********************************************************************
 *      AVIStreamGetFrame	(AVIFILE.110)
 */
SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos)
{
    struct frame_wrapper16 *wrapper = (void *)pg;
    BITMAPINFOHEADER *bih;

    if (!pg) return 0;

    bih = AVIStreamGetFrame(wrapper->pg, pos);
    if (bih)
    {
        DWORD size = bih->biSize + bih->biSizeImage;
        return alloc_segptr_frame(wrapper, bih, size);
    }

    return 0;
}


/***********************************************************************
 *      AVIStreamGetFrameClose  (AVIFILE.111)
 */
HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
{
    struct frame_wrapper16 *wrapper = (void *)pg;
    HRESULT hr;

    if (!pg) return S_OK;

    hr = AVIStreamGetFrameClose(wrapper->pg);
    free_segptr_frame(wrapper);
    HeapFree(GetProcessHeap(), 0, wrapper);
    return hr;
}

/***********************************************************************
 *      AVIFileCreateStream (AVIFILE.144)
 */
HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16)
{
    AVISTREAMINFOA asi;

    if (!asi16)
        return AVIFileCreateStreamA(pfile, ppavi, NULL);

    asi.fccType               = asi16->fccType;
    asi.fccHandler            = asi16->fccHandler;
    asi.dwFlags               = asi16->dwFlags;
    asi.dwCaps                = asi16->dwCaps;
    asi.wPriority             = asi16->wPriority;
    asi.wLanguage             = asi16->wLanguage;
    asi.dwScale               = asi16->dwScale;
    asi.dwRate                = asi16->dwRate;
    asi.dwStart               = asi16->dwStart;
    asi.dwLength              = asi16->dwLength;
    asi.dwInitialFrames       = asi16->dwInitialFrames;
    asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize;
    asi.dwQuality             = asi16->dwQuality;
    asi.dwSampleSize          = asi16->dwSampleSize;
    asi.rcFrame.left          = asi16->rcFrame.left;
    asi.rcFrame.top           = asi16->rcFrame.top;
    asi.rcFrame.right         = asi16->rcFrame.right;
    asi.rcFrame.bottom        = asi16->rcFrame.bottom;
    asi.dwEditCount           = asi16->dwEditCount;
    asi.dwFormatChangeCount   = asi16->dwFormatChangeCount;
    strcpy( asi.szName, asi16->szName );

    return AVIFileCreateStreamA(pfile, ppavi, &asi);
}


/***********************************************************************
 *      AVIStreamInfo       (AVIFILE.162)
 */
HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size)
{
    AVISTREAMINFOA asi;
    HRESULT hr;

    if (!asi16)
        return AVIStreamInfoA(pstream, NULL, size);

    if (size < sizeof(AVISTREAMINFO16))
        return AVIERR_BADSIZE;

    hr = AVIStreamInfoA(pstream, &asi, sizeof(asi));
    if (SUCCEEDED(hr))
    {
        asi16->fccType                = asi.fccType;
        asi16->fccHandler             = asi.fccHandler;
        asi16->dwFlags                = asi.dwFlags;
        asi16->dwCaps                 = asi.dwCaps;
        asi16->wPriority              = asi.wPriority;
        asi16->wLanguage              = asi.wLanguage;
        asi16->dwScale                = asi.dwScale;
        asi16->dwRate                 = asi.dwRate;
        asi16->dwStart                = asi.dwStart;
        asi16->dwLength               = asi.dwLength;
        asi16->dwInitialFrames        = asi.dwInitialFrames;
        asi16->dwSuggestedBufferSize  = asi.dwSuggestedBufferSize;
        asi16->dwQuality              = asi.dwQuality;
        asi16->dwSampleSize           = asi.dwSampleSize;
        asi16->rcFrame.left           = asi.rcFrame.left;
        asi16->rcFrame.top            = asi.rcFrame.top;
        asi16->rcFrame.right          = asi.rcFrame.right;
        asi16->rcFrame.bottom         = asi.rcFrame.bottom;
        asi16->dwEditCount            = asi.dwEditCount;
        asi16->dwFormatChangeCount    = asi.dwFormatChangeCount;
        strcpy( asi16->szName, asi.szName );
    }

    return hr;
}


================================================
FILE: comm/CMakeLists.txt
================================================
file(GLOB SOURCE *.c *.cpp *.rc)
add_library(comm SHARED ${SOURCE} ${PROJECT_SOURCE_DIR}/dummy.c ${CMAKE_CURRENT_BINARY_DIR}/comm.def comm.drv16.obj)
include_directories(../wine)
add_definitions(-D_X86_ -D__WINESRC__ -D__i386__ -DHAVE_STRNCASECMP -DHAVE__STRNICMP -D_WINTERNL_ -DNtCurrentTeb=NtCurrentTeb__ -DDECLSPEC_HIDDEN= -Dstrncasecmp=_strnicmp)
spec_build(comm.drv16 comm)
target_link_libraries(comm libwine winecrt0 krnl386)
set_target_properties(comm PROPERTIES SUFFIX ".drv16")


================================================
FILE: comm/Makefile.in
================================================
MODULE    = comm.drv16
EXTRADLLFLAGS = -m16


================================================
FILE: comm/comm.def
================================================
; File generated automatically from comm\comm.drv16.spec; do not edit!

LIBRARY comm.drv16

EXPORTS
  _wine_spec_dos_header; @1 DATA PRIVATE


================================================
FILE: comm/comm.drv16.spec
================================================
  1 stub INICOM
  2 stub SETCOM
  3 stub SETQUE
  4 stub RECCOM
  5 stub SNDCOM
  6 stub CTX
  7 stub TRMCOM
  8 stub STACOM
  9 stub CEXTFCN
 10 stub CFLUSH
 11 stub CEVT
 12 stub CEVTGET
 13 stub CSETBRK
 14 stub CCLRBRK
 15 stub GETDCB
#16 stub WEP
 17 stub SUSPENDOPENCOMMPORTS # win3.1
 18 stub REACTIVATEOPENCOMMPORTS # win3.1
 19 stub COMMWRITESTRING
 20 stub READCOMMSTRING
100 stub ENABLENOTIFICATION
101 stub ordinal_only__win31


================================================
FILE: comm/comm.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>comm</RootNamespace>
    <ProjectGuid>{3D889B37-09C8-4030-B815-830566CD57A3}</ProjectGuid>
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\PropertySheet.props" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\PropertySheet.props" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <TargetExt>.drv16</TargetExt>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <IntDir>Release</IntDir>
    <TargetExt>.drv16</TargetExt>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
</AdditionalDependencies>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ModuleDefinitionFile>
comm.def
</ModuleDefinitionFile>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;DECLSPEC_HIDDEN=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
      <ModuleDefinitionFile>
comm.def
</ModuleDefinitionFile>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <Object Include="comm.drv16.obj" />
  </ItemGroup>
  <ItemGroup>
    <CustomBuild Include="comm.drv16.spec">
      <FileType>Document</FileType>
      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(OutDir)convspec" "%(Filename).spec" COMM &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename).obj</Outputs>
      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(OutDir)convspec" "%(Filename).spec" COMM &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename).obj</Outputs>
    </CustomBuild>
  </ItemGroup>
  <ItemGroup>
    <None Include="comm.def" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

================================================
FILE: commctrl/CMakeLists.txt
================================================
file(GLOB SOURCE *.c *.cpp *.rc)
add_library(commctrl SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/commctrl.def commctrl.dll16.obj)
include_directories(../wine)
add_definitions(-D_X86_ -D__WINESRC__ -D__i386__ -DHAVE_STRNCASECMP -DHAVE__STRNICMP -D_WINTERNL_ -DNtCurrentTeb=NtCurrentTeb__ -DDECLSPEC_HIDDEN= -Dstrncasecmp=_strnicmp)
spec_build(commctrl.dll16 commctrl)
target_link_libraries(commctrl libwine winecrt0 krnl386 user comctl32.lib)
set_target_properties(commctrl PROPERTIES SUFFIX ".dll16")


================================================
FILE: commctrl/commctrl.c
================================================
#include <Windows.h>
#include <CommCtrl.h>
#include "wine/windef16.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "wine/debug.h"
#include <WowNT32.h>

WINE_DEFAULT_DEBUG_CHANNEL(commctrl);

/* FIXME: CreateWindow("ToolbarWindow") fail */
#include <pshpack1.h>

typedef struct  {
    INT16 iBitmap;
    INT16 idCommand;
    BYTE fsState;
    BYTE fsStyle;
    INT16 idsHelp; /* ? */
} TBBUTTON16, NEAR* PTBBUTTON16, *LPTBBUTTON16;
typedef struct {
    SEGPTR ini_section;
    SEGPTR ini_file;
} TBSAVEPARAMS16, *LPTBSAVEPARAMS16;
#include <poppack.h>
#define TOOLBARCLASSNAME16 "ToolbarWindow"
#define STATUSCLASSNAME16 "msctls_statusbar"
HINSTANCE16 hInstance16;
WNDCLASSEXA toolbar_window_class = { sizeof(WNDCLASSEXA) };
WNDCLASSEXA status_window_class = { sizeof(WNDCLASSEXA) };
LRESULT WINAPI ToolbarWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI StatusWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
void WINAPI InitCommonControls16(void)
{
    static BOOL init;
    if (init)
        return;
    init = TRUE;
    InitCommonControls();
    if (GetClassInfoExA(NULL, TOOLBARCLASSNAMEA, &toolbar_window_class))
    {
        WNDCLASSEXA cls16 = toolbar_window_class;
        cls16.hInstance = hInstance16 = LoadLibrary16("COMMCTRL");
        cls16.lpszClassName = TOOLBARCLASSNAME16;
        cls16.lpfnWndProc = ToolbarWindowProc16;
        if (!RegisterClassExA(&cls16))
        {
            ERR("\n");
        }
    }
    if (GetClassInfoExA(NULL, STATUSCLASSNAMEA, &status_window_class))
    {
        WNDCLASSEXA cls16 = status_window_class;
        cls16.hInstance = hInstance16;
        cls16.lpszClassName = STATUSCLASSNAME16;
        cls16.lpfnWndProc = StatusWindowProc16;
        if (!RegisterClassExA(&cls16))
        {
            ERR("\n");
        }
    }
}
LRESULT WINAPI StatusWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case SB_GETTEXTA:
    case SB_SETTEXTA:
    {
        LPCSTR str = (LPCSTR)MapSL(lParam);
        if (!HIWORD(str))
        {
            str = (LPCSTR)lParam;
        }
        return CallWindowProcA(status_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)str);
    }
    case SB_GETPARTS:
    case SB_SETPARTS:
    {
        LPINT16 ary = (LPINT16)MapSL(lParam);
        LRESULT result;
        INT ary32[256];
        if (wParam > 256)
            return FALSE;
        if (!HIWORD(ary))
        {
            break;
        }
        for (int i = 0; i < wParam; i++)
        {
            ary32[i] = ary[i];
        }
        result = CallWindowProcA(status_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)&ary32);
        for (int i = 0; i < wParam; i++)
        {
            ary[i] = ary32[i];
        }
        return result;
    }
    case SB_GETBORDERS:
    {
        INT borders32[3];
        INT16 *borders = MapSL(lParam);
        LRESULT result;
        int i;
        if (!HIWORD(borders))
            break;
        result = CallWindowProcA(status_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)&borders32);
        for (i = 0; i < 3; i++)
            borders[i] = borders32[i];
        return result;
    }
    }
    return CallWindowProcA(status_window_class.lpfnWndProc, hwnd, msg, wParam, lParam);
}
void TBBUTTON16_32(LPTBBUTTON btn32, LPTBBUTTON16 lpButtons)
{
    btn32->iBitmap = lpButtons->iBitmap;
    btn32->idCommand = lpButtons->idCommand;
    btn32->fsState = lpButtons->fsState;
    btn32->fsStyle = lpButtons->fsStyle;
    btn32->dwData = lpButtons->idsHelp;
    btn32->iString = 0;
}
void TBBUTTON32_16(LPTBBUTTON btn32, LPTBBUTTON16 lpButtons)
{
    lpButtons->iBitmap = btn32->iBitmap;
    lpButtons->idCommand = btn32->idCommand;
    lpButtons->fsState = btn32->fsState;
    lpButtons->fsStyle = btn32->fsStyle;
    lpButtons->idsHelp = btn32->dwData;
}
LRESULT WINAPI ToolbarWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    LRESULT result;
    switch (msg)
    {
    case TB_BUTTONSTRUCTSIZE:
    {
        SetPropW(hwnd, L"TB_BUTTONSTRUCTSIZE", wParam);
        wParam = sizeof(TBBUTTON);
        break;
    }
    break;
    case TB_ADDBITMAP:
    {
        HINSTANCE16 hInst16 = LOWORD(lParam);
        WORD nID16 = HIWORD(lParam);
        TBADDBITMAP tb32 = { 0 };
        if (!hInst16)
        {
            tb32.nID = HBITMAP_32(nID16);
        }
        else
        {
            tb32.nID = HBITMAP_32(LoadBitmap16(hInst16, (LPCSTR)nID16));
        }
        lParam = &tb32;
        return CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, lParam);
    }
    case TB_ADDBUTTONSA:
    {
        LPTBBUTTON16 btn = (LPTBBUTTON16)MapSL(lParam);
        LPTBBUTTON btn32;
        SIZE_T button_struct_size;
        if (!HIWORD(btn))
            break;
        button_struct_size = GetPropW(hwnd, L"TB_BUTTONSTRUCTSIZE");
        btn32 = HeapAlloc(GetProcessHeap(), 0, sizeof(TBBUTTON) * wParam);
        for (int i = 0; i < wParam; i++)
        {
            TBBUTTON16_32(btn32 + i, (LPTBBUTTON16)((LPBYTE)btn + button_struct_size * i));
        }
        result = CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)btn32);
        HeapFree(GetProcessHeap(), 0, btn32);
        return result;
    }
    case TB_SAVERESTOREA:
    {
        LPTBSAVEPARAMS16 sp = (LPTBSAVEPARAMS16)MapSL(lParam);
        TBSAVEPARAMSA sp32 = { 0 };
        if (!HIWORD(sp))
            break;
        if (!wParam)
        {
            sp32.hkr = NULL;
            sp32.pszSubKey = (LPCSTR)MapSL(sp->ini_section);
            sp32.pszValueName = (LPCSTR)MapSL(sp->ini_file);
        }
        /* ini file?? */
        FIXME("TB_SAVERESTORE\n");
        result = 0;
        /* result = CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)&sp32); */
        if (wParam)
        {
            sp->ini_section = MapLS(sp32.pszSubKey);
            sp->ini_file = MapLS(sp32.pszValueName);
        }
        return result;
    }
    case TB_INSERTBUTTONA:
    {
        TBBUTTON btn;
        TBBUTTON16_32(&btn, (LPTBBUTTON16)MapSL(lParam));
        result = CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)&btn);
        return result;
    }
    case TB_GETBUTTON:
    {
        TBBUTTON btn;
        result = CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)&btn);
        TBBUTTON32_16(&btn, (LPTBBUTTON16)MapSL(lParam));
        return result;
    }
    case TB_GETBUTTONTEXTA:
        return CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, (LPARAM)MapSL(lParam));
    default:
        break;
    }
    return CallWindowProcA(toolbar_window_class.lpfnWndProc, hwnd, msg, wParam, lParam);
}
/* based on wine */

HWND16 WINAPI CreateToolbarEx16(HWND16 hwnd, DWORD style /* window style */, UINT16 wID /* control id */, INT16 nBitmaps,
    HINSTANCE16 hBMInst, WORD wBMID /* bitmap resource id or bitmap handle(hBMInst == NULL) */, LPTBBUTTON16 lpButtons,
    INT16 iNumButtons, INT16 dxButton, INT16 dyButton,
    INT16 dxBitmap, INT16 dyBitmap, UINT16 uStructSize)
{
    TBBUTTON buttons32 = { 0 };
    HWND hwndTB;
    HBITMAP bitmap32 = NULL;
    InitCommonControls16();

    hwndTB =
        CreateWindowExA(0, TOOLBARCLASSNAME16, NULL, style|WS_CHILD, 0,0,100,30,
                        HWND_32(hwnd), (HMENU)(DWORD_PTR)wID, hInstance16, NULL);
    if(hwndTB) {

        SendMessageA (hwndTB, TB_BUTTONSTRUCTSIZE, uStructSize, 0);

       /* set bitmap and button size */
       /*If CreateToolbarEx receives 0, windows sets default values*/
       if (dxBitmap < 0)
           dxBitmap = 16;
       if (dyBitmap < 0)
           dyBitmap = 16;
       if (dxBitmap == 0 || dyBitmap == 0)
           dxBitmap = dyBitmap = 16;
       SendMessageA(hwndTB, TB_SETBITMAPSIZE, 0, MAKELPARAM(dxBitmap, dyBitmap));

       if (dxButton < 0)
           dxButton = dxBitmap;
       if (dyButton < 0)
           dyButton = dyBitmap;
       /* TB_SETBUTTONSIZE -> TB_SETBITMAPSIZE bug introduced for Windows compatibility */
       if (dxButton != 0 && dyButton != 0)
            SendMessageA(hwndTB, TB_SETBITMAPSIZE, 0, MAKELPARAM(dxButton, dyButton));


	/* add bitmaps */
	if (nBitmaps > 0 || hBMInst == HINST_COMMCTRL)
	{
            SendMessageA (hwndTB, TB_ADDBITMAP, nBitmaps, MAKELONG(hBMInst, wBMID));
	}
	/* add buttons */
	if(iNumButtons > 0)
        SendMessageA (hwndTB, TB_ADDBUTTONSA, iNumButtons, (LPARAM)MapLS(lpButtons));
    }
    return HWND_16(hwndTB);
}

HWND16 WINAPI CreateStatusWindow16(LONG style, LPCSTR text, HWND16 hwndParent, UINT16 wid)
{
    HWND parent = HWND_32(hwndParent);
    return HWND_16(CreateWindowA(STATUSCLASSNAME16, text, style,
			   CW_USEDEFAULT, CW_USEDEFAULT,
			   CW_USEDEFAULT, CW_USEDEFAULT,
			   parent, (HMENU)(DWORD_PTR)wid, 0, 0));
}
LPRECT RECT16_32(LPRECT rect32, LPRECT16 lprc)
{
    if (!lprc)
        return NULL;
    rect32->left = lprc->left;
    rect32->right = lprc->right;
    rect32->top = lprc->top;
    rect32->bottom = lprc->bottom;
    return rect32;
}
LPRECT16 RECT32_16(LPRECT rect32, LPRECT16 lprc)
{
    if (!lprc)
        return NULL;
    lprc->left = rect32->left;
    lprc->right = rect32->right;
    lprc->top = rect32->top;
    lprc->bottom = rect32->bottom;
    return lprc;
}

void WINAPI GetEffectiveClientRect16(HWND16 hWnd, LPRECT16 lprc, const INT16 *lpInfo)
{
    HWND hWnd32 = HWND_32(hWnd);
    RECT rect32;
    SIZE_T len = 0;
    LPINT info32;
    const INT16 *lpRun = lpInfo;
    do
    {
        lpRun += 2;
        if (*lpRun == 0)
            break;
        lpRun += 2;
    } while (*lpRun);
    len = (lpRun - lpInfo) + 1;
    info32 = (LPINT)HeapAlloc(GetProcessHeap(), 0, len * sizeof(INT));
    for (int i = 0; i < len; i++)
    {
        info32[i] = lpInfo[i];
    }
    GetEffectiveClientRect(hWnd32, RECT16_32(&rect32, lprc), info32);
    RECT32_16(&rect32, lprc);
    HeapFree(GetProcessHeap(), 0, info32);
}
static int find_sub_menu( HMENU *hmenu, HMENU16 target )
{
    int i, pos, count = GetMenuItemCount( *hmenu );

    for (i = 0; i < count; i++)
    {
        HMENU sub = GetSubMenu( *hmenu, i );
        if (!sub) continue;
        if (HMENU_16(sub) == target) return i;
        if ((pos = find_sub_menu( &sub, target )) != -1)
        {
            *hmenu = sub;
            return pos;
        }
    }
    return -1;
}


#include <pshpack1.h>
typedef struct
{
    WORD command_id_off;
    WORD menu_id_off;
    struct
    {
        WORD popup_id;
        HMENU16 hPopup;
    } popup_ids[1];
} MENUHELP16;
#include <poppack.h>
static int get_menu_off(HMENU hMainMenu, HMENU hSubMenu)
{
    int i = 0;
    int count = GetMenuItemCount(hMainMenu);
    for (i = 0; i < count; i++)
    {
        HMENU s = GetSubMenu(hMainMenu, i);
        if (s == hSubMenu)
        {
            return i;
        }
    }
    return -1;
}
/* based on wine */
VOID WINAPI
MenuHelp16 (UINT16 uMsg, WPARAM16 wParam, LPARAM lParam, HMENU16 hMainMenu, HINSTANCE16 hInst, HWND16 hwndStatus, MENUHELP16 *lpwIDs)
{
    UINT uMenuID = 0;
    WORD wIDItem = wParam;
    WORD fwMenu = LOWORD(lParam);
    HMENU hMenu = HMENU_32(HIWORD(lParam));

    if (!IsWindow (HWND_32(hwndStatus)))
	return;

    switch (uMsg) {
	case WM_MENUSELECT:
	    TRACE("WM_MENUSELECT wParam=0x%lX lParam=0x%lX\n",
		   wParam, lParam);

            if ((fwMenu == 0xFFFF) && (hMenu == 0)) {
                /* menu was closed */
		TRACE("menu was closed!\n");
                SendMessageA (HWND_32(hwndStatus), SB_SIMPLE, FALSE, 0);
            }
	    else {
		/* menu item was selected */
		if (fwMenu & MF_POPUP)
        {
            if (!uMenuID)
            {
                int i = 0;
                HMENU hMainMenu32 = HMENU_32(hMainMenu);
                HMENU hSubMenu = HMENU_32(wParam);
                int off = get_menu_off(hMainMenu32, hSubMenu);
                if (off != -1)
                {
                    uMenuID = off + lpwIDs->menu_id_off;
                }
                else
                {
                    while (TRUE)
                    {
                        if (lpwIDs->popup_ids[i].hPopup == 0 && lpwIDs->popup_ids[i].popup_id == 0)
                            break;
                        if (lpwIDs->popup_ids[i].hPopup == wIDItem)
                        {
                            uMenuID = lpwIDs->popup_ids[i].popup_id;
                            break;
                        }
                        i++;
                    }
                }
            }
        }
		else
		    uMenuID = lpwIDs->command_id_off + (UINT)wIDItem;
		TRACE("uMenuID = %u\n", uMenuID);

		if (uMenuID) {
		    CHAR szText[256];

		    if (!LoadString16 (hInst, uMenuID, szText, ARRAYSIZE(szText)))
			szText[0] = '\0';

		    SendMessageA (HWND_32(hwndStatus), SB_SETTEXTA,
				    255 | SBT_NOBORDERS, (LPARAM)szText);
		    SendMessageA (HWND_32(hwndStatus), SB_SIMPLE, TRUE, 0);
		}
	    }
	    break;

        case WM_COMMAND :
	    TRACE("WM_COMMAND wParam=0x%lX lParam=0x%lX\n",
		   wParam, lParam);
	    /* WM_COMMAND is not invalid since it is documented
	     * in the windows api reference. So don't output
             * any FIXME for WM_COMMAND
             */
	    WARN("We don't care about the WM_COMMAND\n");
	    break;

	default:
	    FIXME("Invalid Message 0x%x!\n", uMsg);
	    break;
    }
}

HBITMAP16 WINAPI CreateMappedBitmap16(HINSTANCE16 hInstance, INT16 idBitmap, UINT16 wFlags, LPCOLORMAP lpColorMap, INT16 iNumMaps)
{
    /* wine */
    HGLOBAL16 hglb;
    HRSRC16 hRsrc;
    const BITMAPINFOHEADER *lpBitmap;
    LPBITMAPINFOHEADER lpBitmapInfo;
    UINT nSize, nColorTableSize, iColor;
    RGBQUAD *pColorTable;
    INT i, iMaps, nWidth, nHeight;
    HDC hdcScreen;
    HBITMAP hbm;
    LPCOLORMAP sysColorMap;
    COLORREF cRef;
    COLORMAP internalColorMap[4] =
	{{0x000000, 0}, {0x808080, 0}, {0xC0C0C0, 0}, {0xFFFFFF, 0}};

    /* initialize pointer to colortable and default color table */
    if (lpColorMap) {
	iMaps = iNumMaps;
	sysColorMap = lpColorMap;
    }
    else {
	internalColorMap[0].to = GetSysColor (COLOR_BTNTEXT);
	internalColorMap[1].to = GetSysColor (COLOR_BTNSHADOW);
	internalColorMap[2].to = GetSysColor (COLOR_BTNFACE);
	internalColorMap[3].to = GetSysColor (COLOR_BTNHIGHLIGHT);
	iMaps = 4;
	sysColorMap = internalColorMap;
    }

    hRsrc = FindResource16 (hInstance, (LPSTR)idBitmap, (LPSTR)RT_BITMAP);
    if (hRsrc == 0)
	return 0;
    hglb = LoadResource16 (hInstance, hRsrc);
    if (hglb == 0)
	return 0;
    lpBitmap = LockResource16 (hglb);
    if (lpBitmap == NULL)
	return 0;

    if (lpBitmap->biSize >= sizeof(BITMAPINFOHEADER) && lpBitmap->biClrUsed)
        nColorTableSize = lpBitmap->biClrUsed;
    else if (lpBitmap->biBitCount <= 8)	
        nColorTableSize = (1 << lpBitmap->biBitCount);
    else
        nColorTableSize = 0;
    nSize = lpBitmap->biSize;
    if (nSize == sizeof(BITMAPINFOHEADER) && lpBitmap->biCompression == BI_BITFIELDS)
        nSize += 3 * sizeof(DWORD);
    nSize += nColorTableSize * sizeof(RGBQUAD);
    lpBitmapInfo = GlobalAlloc (GMEM_FIXED, nSize);
    if (lpBitmapInfo == NULL)
	return 0;
    RtlMoveMemory (lpBitmapInfo, lpBitmap, nSize);

    pColorTable = (RGBQUAD*)(((LPBYTE)lpBitmapInfo) + lpBitmapInfo->biSize);

    for (iColor = 0; iColor < nColorTableSize; iColor++) {
	for (i = 0; i < iMaps; i++) {
            cRef = RGB(pColorTable[iColor].rgbRed,
                       pColorTable[iColor].rgbGreen,
                       pColorTable[iColor].rgbBlue);
	    if ( cRef  == sysColorMap[i].from) {
#if 0
		if (wFlags & CBS_MASKED) {
		    if (sysColorMap[i].to != COLOR_BTNTEXT)
			pColorTable[iColor] = RGB(255, 255, 255);
		}
		else
#endif
                    pColorTable[iColor].rgbBlue  = GetBValue(sysColorMap[i].to);
                    pColorTable[iColor].rgbGreen = GetGValue(sysColorMap[i].to);
                    pColorTable[iColor].rgbRed   = GetRValue(sysColorMap[i].to);
		break;
	    }
	}
    }
    nWidth  = lpBitmapInfo->biWidth;
    nHeight = lpBitmapInfo->biHeight;
    hdcScreen = GetDC (NULL);
    hbm = CreateCompatibleBitmap (hdcScreen, nWidth, nHeight);
    if (hbm) {
	HDC hdcDst = CreateCompatibleDC (hdcScreen);
	HBITMAP hbmOld = SelectObject (hdcDst, hbm);
	const BYTE *lpBits = (const BYTE *)lpBitmap + nSize;
	StretchDIBits (hdcDst, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight,
		         lpBits, (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS,
		         SRCCOPY);
	SelectObject (hdcDst, hbmOld);
	DeleteDC (hdcDst);
    }
    ReleaseDC (NULL, hdcScreen);
    GlobalFree (lpBitmapInfo);
    FreeResource16 (hglb);

    return HBITMAP_16(hbm);
}

HWND16 WINAPI CreateToolbar16(HWND16 hwnd, DWORD style, UINT16 wID, INT16 nBitmaps, HINSTANCE16 hBMInst, UINT16 wBMID, LPTBBUTTON16 lpButtons, INT16 iNumButtons)
{
    return CreateToolbarEx16(hwnd, style | CCS_NODIVIDER, wID, nBitmaps,
        hBMInst, wBMID, lpButtons,
        iNumButtons, 0, 0, 0, 0, sizeof(TBBUTTON16));
}

BOOL16 WINAPI MakeDragList16(HWND16 hLB)
{
    return MakeDragList(HWND_32(hLB));
}

HWND16 WINAPI CreateHeaderWindow16(LONG a1, LPSTR a2, HWND16 a3, WORD a4)
{
    FIXME("(%08x,%s,%04x,%04x)\n", a1, debugstr_a(a2), a3, a4);
    return 0;
}


================================================
FILE: commctrl/commctrl.def
================================================
; File generated automatically from commctrl\commctrl.dll16.spec; do not edit!

LIBRARY commctrl.dll16

EXPORTS
  _wine_spec_dos_header @1 DATA


================================================
FILE: commctrl/commctrl.dll16.spec
================================================
16 stub CREATEUPDOWNCONTROL
44 stub IMAGELIST_SETBKCOLOR
339 stub DPA_SEARCH
332 stub DPA_GETPTR
336 stub DPA_DELETEPTR
329 stub DPA_DESTROY
334 stub DPA_INSERTPTR
13 pascal -ret16 MakeDragList(word) MakeDragList16
15 stub DRAWINSERT
335 stub DPA_SETPTR
20 pascal -ret16 CreateToolbarEx(word long word word word word ptr word word word word word word) CreateToolbarEx16
328 stub DPA_CREATE
4 pascal -ret16 GetEffectiveClientRect(word ptr ptr) GetEffectiveClientRect16
45 stub IMAGELIST_GETBKCOLOR
42 stub IMAGELIST_GETIMAGECOUNT
333 stub DPA_GETPTRINDEX
40 stub IMAGELIST_CREATE
2 pascal -ret16 MenuHelp(word word long word word word ptr) MenuHelp16
49 stub IMAGELIST_DRAW
43 stub IMAGELIST_SETOVERLAYIMAGE
160 stub CREATEPROPERTYSHEETPAGE
5 stub DRAWSTATUSTEXT
338 stub DPA_SORT
8 pascal -ret16 CreateMappedBitmap(word word word ptr word) CreateMappedBitmap16
3 stub SHOWHIDEMENUCTL
161 stub DESTROYPROPERTYSHEETPAGE
41 stub IMAGELIST_DESTROY
17 pascal -ret16 InitCommonControls() InitCommonControls16
14 stub LBITEMFROMPT
6 pascal -ret16 CreateStatusWindow(long str word word) CreateStatusWindow16
159 stub PROPERTYSHEET
7 pascal -ret16 CreateToolbar(word long word word word word ptr word) CreateToolbar16
331 stub DPA_CLONE
54 stub IMAGELIST_REPLACEICON
337 stub DPA_DELETEALLPTRS
330 stub DPA_GROW
46 stub IMAGELIST_ADD
53 stub IMAGELIST_ADDICON

9 pascal -ret16 CreateHeaderWindow(long str word word) CreateHeaderWindow16

10 pascal -ret16 WritePrivateProfileStruct(str str ptr word str) WritePrivateProfileStruct16
11 pascal -ret16 GetPrivateProfileStruct(str str ptr word str) GetPrivateProfileStruct16


================================================
FILE: commctrl/commctrl.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <Keyword>Win32Proj</Keyword>
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
    <RootNamespace>commctrl</RootNamespace>
    <ProjectGuid>{CB9C6113-15AB-4DB9-A323-C2094A9A6E92}</ProjectGuid>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <Import Project="..\PropertySheet.props" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <IntDir>Release</IntDir>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
$(OutDir)user.lib;comctl32.lib;user32.lib;gdi32.lib</AdditionalDependencies>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <ModuleDefinitionFile>
commctrl.def
      </ModuleDefinitionFile>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;DECLSPEC_HIDDEN=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
      <ModuleDefinitionFile>
commctrl.def
      </ModuleDefinitionFile>
      <AdditionalDependencies>$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;
$(OutDir)user.lib;comctl32.lib;user32.lib;gdi32.lib</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="commctrl.c" />
  </ItemGroup>
  <ItemGroup>
    <Object Include="commctrl.dll16.obj" />
  </ItemGroup>
  <ItemGroup>
    <CustomBuild Include="commctrl.dll16.spec">
      <FileType>Document</FileType>
      <Command Condition="'$(Platform)'=='Win32'">"$(OutDir)convspec" "%(Filename).spec" COMMCTRL &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Platform)'=='Win32'">%(Filename).obj</Outputs>
    </CustomBuild>
  </ItemGroup>
  <ItemGroup>
    <None Include="commctrl.def" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

================================================
FILE: commdlg/CMakeLists.txt
================================================
file(GLOB SOURCE *.c *.cpp *.rc)
add_library(commdlg SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/commdlg.def commdlg.dll16.obj)
include_directories(../wine)
add_definitions(-D_X86_ -D__WINESRC__ -D__i386__ -DHAVE_STRNCASECMP -DHAVE__STRNICMP -D_WINTERNL_ -DNtCurrentTeb=NtCurrentTeb__ -DDECLSPEC_HIDDEN= -Dstrncasecmp=_strnicmp)
spec_build(commdlg.dll16 commdlg)
target_link_libraries(commdlg libwine winecrt0 krnl386 user comdlg32.lib)
set_target_properties(commdlg PROPERTIES SUFFIX ".dll16")


================================================
FILE: commdlg/cdlg16.h
================================================
/*
 * Common Dialog Boxes interface (16 bit implementation)
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 * Copyright 1998 Bertho A. Stultiens
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#ifndef _WINE_DLL_CDLG16_H
#define _WINE_DLL_CDLG16_H

#include "dlgs.h"
#include "wine/windef16.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "wownt32.h"

/* 16 bit api */

#include "pshpack1.h"

typedef UINT16 (CALLBACK *LPOFNHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);

typedef struct {
	DWORD		lStructSize;
	HWND16		hwndOwner;
	HINSTANCE16	hInstance;
	SEGPTR	        lpstrFilter;
	SEGPTR          lpstrCustomFilter;
	DWORD		nMaxCustFilter;
	DWORD		nFilterIndex;
	SEGPTR          lpstrFile;
	DWORD		nMaxFile;
	SEGPTR		lpstrFileTitle;
	DWORD		nMaxFileTitle;
	SEGPTR 		lpstrInitialDir;
	SEGPTR 		lpstrTitle;
	DWORD		Flags;
	UINT16		nFileOffset;
	UINT16		nFileExtension;
	SEGPTR		lpstrDefExt;
	LPARAM 		lCustData;
	LPOFNHOOKPROC16 lpfnHook;
	SEGPTR 		lpTemplateName;
}   OPENFILENAME16,*LPOPENFILENAME16;

typedef UINT16 (CALLBACK *LPCCHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);

typedef struct {
	DWORD		lStructSize;
	HWND16		hwndOwner;
	HWND16		hInstance;
	COLORREF	rgbResult;
	SEGPTR          lpCustColors;
	DWORD 		Flags;
	LPARAM		lCustData;
        LPCCHOOKPROC16  lpfnHook;
	SEGPTR 		lpTemplateName;
} CHOOSECOLOR16;
typedef CHOOSECOLOR16 *LPCHOOSECOLOR16;

typedef UINT16 (CALLBACK *LPFRHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
typedef struct {
	DWORD		lStructSize; 		/* size of this struct 0x20 */
	HWND16		hwndOwner; 		/* handle to owner's window */
	HINSTANCE16	hInstance; 		/* instance handle of.EXE that  */
						/* contains cust. dlg. template */
	DWORD		Flags;                  /* one or more of the FR_?? */
	SEGPTR		lpstrFindWhat;          /* ptr. to search string    */
	SEGPTR		lpstrReplaceWith;       /* ptr. to replace string   */
	UINT16		wFindWhatLen;           /* size of find buffer      */
	UINT16 		wReplaceWithLen;        /* size of replace buffer   */
	LPARAM 		lCustData;              /* data passed to hook fn.  */
        LPFRHOOKPROC16  lpfnHook;
	SEGPTR 		lpTemplateName;         /* custom template name     */
} FINDREPLACE16, *LPFINDREPLACE16;

typedef UINT16 (CALLBACK *LPCFHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
typedef struct
{
	DWORD			lStructSize;
	HWND16			hwndOwner;          /* caller's window handle   */
	HDC16          	        hDC;                /* printer DC/IC or NULL    */
	SEGPTR                  lpLogFont;          /* ptr. to a LOGFONT struct */
	short			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.  */
	LPCFHOOKPROC16          lpfnHook;
	SEGPTR			lpTemplateName;     /* custom template name     */
	HINSTANCE16		hInstance;          /* instance handle of.EXE that   */
					/* contains cust. dlg. template  */
	SEGPTR			lpszStyle;          /* return the style field here   */
					/* must be LF_FACESIZE or bigger */
	UINT16			nFontType;          /* same value reported to the    */
						    /* EnumFonts callback with the   */
						    /* extra FONTTYPE_ bits added    */
	short			nSizeMin;           /* minimum pt size allowed & */
	short			nSizeMax;           /* max pt size allowed if    */
					/* CF_LIMITSIZE is used      */
} CHOOSEFONT16, *LPCHOOSEFONT16;


typedef UINT16 (CALLBACK *LPPRINTHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
typedef UINT16 (CALLBACK *LPSETUPHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
typedef struct
{
    DWORD            lStructSize;
    HWND16           hwndOwner;
    HGLOBAL16        hDevMode;
    HGLOBAL16        hDevNames;
    HDC16            hDC;
    DWORD            Flags;
    WORD             nFromPage;
    WORD             nToPage;
    WORD             nMinPage;
    WORD             nMaxPage;
    WORD             nCopies;
    HINSTANCE16      hInstance;
    LPARAM           lCustData;
    LPPRINTHOOKPROC16 lpfnPrintHook;
    LPSETUPHOOKPROC16 lpfnSetupHook;
    SEGPTR           lpPrintTemplateName;
    SEGPTR           lpSetupTemplateName;
    HGLOBAL16        hPrintTemplate;
    HGLOBAL16        hSetupTemplate;
} PRINTDLG16, *LPPRINTDLG16;

BOOL16  WINAPI ChooseColor16(LPCHOOSECOLOR16 lpChCol);
HWND16  WINAPI FindText16( SEGPTR find);
BOOL16  WINAPI GetOpenFileName16(SEGPTR ofn);
BOOL16  WINAPI GetSaveFileName16(SEGPTR ofn);
BOOL16  WINAPI PrintDlg16( SEGPTR print);
HWND16  WINAPI ReplaceText16( SEGPTR find);
BOOL16  WINAPI ChooseFont16(SEGPTR);
BOOL16 CALLBACK ColorDlgProc16( HWND16 hDlg16, UINT16 message, WPARAM16 wParam, LPARAM lParam );
BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics, UINT16 nFontType, LPARAM lParam );
INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics, UINT16 nFontType, LPARAM lParam);
BOOL16 CALLBACK FormatCharDlgProc16(HWND16 hDlg16, UINT16 message, WPARAM16 wParam, LPARAM lParam);
short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam);
BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);

typedef struct
{
    BYTE pop_eax;   //58
    BYTE push;      //68
    DWORD this_;
    BYTE push_eax;  //50
    BYTE mov_eax;   //B8
    DWORD address;
    BYTE jmp;       //FF E0
    BYTE eax;       //E0
    BOOL used;
    SEGPTR segofn16;
    SEGPTR func;
    union
    {
        OPENFILENAME16 ofn16;
        PRINTDLGA pd;
    };
} COMMDLGTHUNK;
COMMDLGTHUNK *allocate_thunk(SEGPTR ofnseg, SEGPTR func);
void delete_thunk(LPVOID func);
#include "poppack.h"

typedef struct
{
    HMENU16 hMenu16;
    DLGPROC16 dlgProc;
} dialog_data;
DLGTEMPLATE *WINAPI dialog_template16_to_template32(HINSTANCE16 hInst, SEGPTR dlgTemplate16, DWORD *size, dialog_data *paramd);
#endif /* _WINE_DLL_CDLG16_H */


================================================
FILE: commdlg/colordlg.c
================================================
/*
 * COMMDLG - Color Dialog
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

/* BUGS : still seems to not refresh correctly
   sometimes, especially when 2 instances of the
   dialog are loaded at the same time */

#include <ctype.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "commdlg.h"
#include "wine/debug.h"
#include "cdlg16.h"

WINE_DEFAULT_DEBUG_CHANNEL(commdlg);


/***********************************************************************
 *           ColorDlgProc   (COMMDLG.8)
 */
BOOL16 CALLBACK ColorDlgProc16( HWND16 hDlg16, UINT16 message, WPARAM16 wParam, LPARAM lParam )
{
    FIXME( "%04x %04x %04x %08lx: stub\n", hDlg16, message, wParam, lParam );
    return FALSE;
}

/***********************************************************************
 *            ChooseColor  (COMMDLG.5)
 */
BOOL16 WINAPI ChooseColor16( LPCHOOSECOLOR16 cc16 )
{
    CHOOSECOLORA cc32;
    BOOL ret;

    cc32.lStructSize  = sizeof(cc32);
    cc32.hwndOwner    = HWND_32( cc16->hwndOwner );
    cc32.rgbResult    = cc16->rgbResult;
    cc32.lpCustColors = MapSL( cc16->lpCustColors );
    cc32.Flags        = cc16->Flags & ~(CC_ENABLETEMPLATE | CC_ENABLETEMPLATEHANDLE | CC_ENABLEHOOK);
    cc32.lCustData    = cc16->lCustData;
    cc32.hInstance    = NULL;
    cc32.lpfnHook     = NULL;
    cc32.lpTemplateName = NULL;

    if (cc16->Flags & (CC_ENABLETEMPLATE | CC_ENABLETEMPLATEHANDLE))
        FIXME( "custom templates no longer supported, using default\n" );
    if (cc16->Flags & CC_ENABLEHOOK)
        FIXME( "custom hook %p no longer supported\n", cc16->lpfnHook );

    if ((ret = ChooseColorA( &cc32 )))
    {
        cc16->rgbResult = cc32.rgbResult;
    }
    return ret;
}


================================================
FILE: commdlg/commdlg.def
================================================
; File generated automatically from commdlg.dll16.spec; do not edit!

LIBRARY commdlg.dll16

EXPORTS
  _wine_spec_dos_header;=.L__wine_spec_dos_header @1 DATA PRIVATE


================================================
FILE: commdlg/commdlg.dll16.spec
================================================
1   pascal -ret16 GetOpenFileName(segptr) GetOpenFileName16
2   pascal -ret16 GetSaveFileName(segptr) GetSaveFileName16
5   pascal -ret16 ChooseColor(ptr) ChooseColor16
6   pascal   FileOpenDlgProc(word word word long) FileOpenDlgProc16
7   pascal   FileSaveDlgProc(word word word long) FileSaveDlgProc16
8   pascal   ColorDlgProc(word word word long) ColorDlgProc16
#9   pascal  LOADALTERBITMAP exported, shared data
11  pascal -ret16 FindText(segptr) FindText16
12  pascal -ret16 ReplaceText(segptr) ReplaceText16
13  pascal   FindTextDlgProc(word word word long) FindTextDlgProc16
14  pascal   ReplaceTextDlgProc(word word word long) ReplaceTextDlgProc16
15  pascal -ret16 ChooseFont(segptr) ChooseFont16
16  pascal -ret16 FormatCharDlgProc(word word word long) FormatCharDlgProc16
18  pascal -ret16 FontStyleEnumProc(ptr ptr word long)   FontStyleEnumProc16
19  pascal -ret16 FontFamilyEnumProc(ptr ptr word long)  FontFamilyEnumProc16
20  pascal -ret16 PrintDlg(segptr) PrintDlg16
21  pascal   PrintDlgProc(word word word long) PrintDlgProc16
22  pascal   PrintSetupDlgProc(word word word long) PrintSetupDlgProc16
#23  pascal  EDITINTEGERONLY exported, shared data
#25  pascal  WANTARROWS exported, shared data
26  pascal   CommDlgExtendedError() CommDlgExtendedError16
27  pascal -ret16 GetFileTitle(str ptr word) GetFileTitle16
#28  pascal  WEP exported, shared data
#29  pascal  DWLBSUBCLASS exported, shared data
#30  pascal  DWUPARROWHACK exported, shared data
#31  pascal  DWOKSUBCLASS exported, shared data


================================================
FILE: commdlg/commdlg.rc
================================================
#include "resource.h"

#include "winresrc.h"

/*  64 KiB dummy resource */
IDB_BITMAP1             BITMAP                  "dummy.bmp"

#define OPEN_FILE 1536
#define SAVE_FILE 1537
#define PRINT 1538
#define PRINT_SETUP 1539
#define FIND 1540
#define REPLACE 1541
#define CHOOSE_FONT 1543
#define CHOOSE_COLOR CHOOSECOLOR

OPEN_FILE DIALOG 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Open"
FONT 8, "MS Shell Dlg"
{
 LTEXT "File &Name:", stc3, 6, 6, 76, 9
 EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
 LISTBOX lst1, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
 LTEXT "&Directories:", -1, 110, 6, 92, 9
 LTEXT "", stc1, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
 LISTBOX lst2, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
 LTEXT "List Files of &Type:", stc2, 6, 104, 90, 9
 COMBOBOX cmb1, 6, 114, 90, 60, 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
 DEFPUSHBUTTON "Open", IDOK, 208, 6, 60, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancel", IDCANCEL, 208, 24, 60, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Help", pshHelp, 208, 46, 60, 14, WS_GROUP | WS_TABSTOP
 CHECKBOX "&Read Only", chx1, 208, 68, 65, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}


SAVE_FILE DIALOG 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Save As..."
FONT 8, "MS Shell Dlg"
{
 LTEXT "File &Name:", stc3, 6, 6, 76, 9
 EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
 LISTBOX lst1, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
 LTEXT "&Directories:", -1, 110, 6, 92, 9
 LTEXT "", stc1, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
 LISTBOX lst2, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
 LTEXT "List Files of &Type:", stc2, 6, 104, 90, 9
 COMBOBOX cmb1, 6, 114, 90, 60, 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
 DEFPUSHBUTTON "Save As", IDOK, 208, 6, 60, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancel", IDCANCEL, 208, 24, 60, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Help", pshHelp, 208, 46, 60, 14, WS_GROUP | WS_TABSTOP
 CHECKBOX "&Read Only", chx1, 208, 68, 65, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}


PRINT DIALOG 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print"
FONT 8, "MS Shell Dlg"
{
 LTEXT "Printer:", stc6, 6, 6, 40, 9
 LTEXT "", stc1, 60, 6, 150, 9
 GROUPBOX "Print range", grp1, 6, 30, 160, 65, BS_GROUPBOX
 RADIOBUTTON "&All", rad1, 16, 45, 60, 12
 RADIOBUTTON "S&election", rad2, 16, 60, 60, 12
 RADIOBUTTON "&Pages", rad4, 16, 75, 60, 12
 DEFPUSHBUTTON "Print", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancel", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Help", psh15, 206, 75, 56, 14, WS_GROUP | WS_TABSTOP
 LTEXT "&From:", stc2, 60, 80, 30, 9
 EDITTEXT edt1, 80, 78, 26, 12, ES_RIGHT | WS_BORDER | WS_TABSTOP
 LTEXT "&To:", stc3, 120, 80, 30, 9
 EDITTEXT edt2, 135, 78, 26, 12, ES_RIGHT | WS_BORDER | WS_TABSTOP
 LTEXT "Print &Quality:", stc4, 6, 100, 76, 9
 LTEXT "&Copies:", stc5, 180, 100, 29, 9
 EDITTEXT edt3, 205, 98, 26, 12, ES_RIGHT | WS_BORDER | WS_TABSTOP
 COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 CHECKBOX "Print to Fi&le", chx1, 20, 120, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
 CHECKBOX "Condensed", chx2, 160, 120, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}

PRINT_SETUP DIALOG 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print Setup"
FONT 8, "MS Shell Dlg"
{
 GROUPBOX "Printer", grp3, 6, 6, 180, 72, BS_GROUPBOX
 RADIOBUTTON "&Default Printer", rad3, 16, 16, 150, 12
 LTEXT "[none]", stc1, 35, 30, 120, 9
 RADIOBUTTON "Specific &Printer", rad4, 16, 44, 150, 12
 COMBOBOX cmb1, 35, 58, 145, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancel", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
 GROUPBOX "Orientation", grp1, 6, 82, 100, 50, BS_GROUPBOX
 RADIOBUTTON "Po&rtrait", rad1, 50, 95, 50, 12
 RADIOBUTTON "&Landscape", rad2, 50, 110, 50, 12
 ICON "LANDSCAP", ico1, 10, 95, 32, 32
 GROUPBOX "Paper", grp2, 116, 82, 178, 50, BS_GROUPBOX
 LTEXT "Si&ze", stc2, 126, 95, 35, 9
 LTEXT "&Source", stc3, 126, 110, 35, 9
 COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
}


CHOOSE_FONT DIALOG  13, 54, 274, 147
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font"
FONT 8, "MS Shell Dlg"
{
    LTEXT           "&Font:",stc1 ,6,3,90,9
    COMBOBOX        cmb1, 6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
    LTEXT           "Font St&yle:",stc2 ,108,3,60,9
    COMBOBOX        cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
    LTEXT           "&Size:",stc3,179,3,32,9
    COMBOBOX        cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
    DEFPUSHBUTTON   "OK",IDOK,218,6,50,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
    PUSHBUTTON      "Cancel",IDCANCEL,218,23,50,14,WS_GROUP | WS_TABSTOP
    PUSHBUTTON      "&Apply", psh3,218,40,50,14,WS_GROUP | WS_TABSTOP
    PUSHBUTTON      "&Help" , pshHelp,218,57,50,14,WS_GROUP | WS_TABSTOP
    GROUPBOX        "Effects",grp1,6,72,84,36,WS_GROUP
    CHECKBOX	    "Stri&keout", chx1, 10,82,78,10, BS_AUTOCHECKBOX | WS_TABSTOP
    CHECKBOX 	    "&Underline", chx2, 10,94,78,10, BS_AUTOCHECKBOX
    LTEXT           "&Color:", stc4 ,6,114,80,9
    COMBOBOX        cmb4,6,124,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
		    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
    GROUPBOX        "Sample",grp2,98,72,120,36,WS_GROUP
    CTEXT           "",stc5,103,81,109,24,SS_NOPREFIX | NOT WS_VISIBLE
    CTEXT           "",stc6,98,123,120,90,SS_NOPREFIX | NOT WS_GROUP
//    LTEXT           "Scr&ipt:",stc7 ,98,114,40,9
//    COMBOBOX        cmb5,98,124,120,90,CBS_DROPDOWNLIST | CBS_HASSTRINGS |
//		    CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
}

/* Color dialog controls */
#define IDC_COLOR_LUMBAR 702
#define IDC_COLOR_EDIT_H 703
#define IDC_COLOR_EDIT_S 704
#define IDC_COLOR_EDIT_L 705
#define IDC_COLOR_EDIT_R 706
#define IDC_COLOR_EDIT_G 707
#define IDC_COLOR_EDIT_B 708
#define IDC_COLOR_RESULT 709
#define IDC_COLOR_GRAPH  710
#define IDC_COLOR_ADD    712
#define IDC_COLOR_RES    713
#define IDC_COLOR_DEFINE 719
#define IDC_COLOR_PREDEF 720
#define IDC_COLOR_USRDEF 721
#define IDC_COLOR_HL     723
#define IDC_COLOR_SL     724
#define IDC_COLOR_LL     725
#define IDC_COLOR_RL     726
#define IDC_COLOR_GL     727
#define IDC_COLOR_BL 728

CHOOSE_COLOR DIALOG 36, 24, 300, 185
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Color"
FONT 8, "MS Shell Dlg"
{
 LTEXT "&Basic Colors:",   stc1, 4,    4,  140, 10
 LTEXT "&Custom Colors:",  stc2, 4,   106, 140, 10
 LTEXT "Color |  Sol&id",  stc3, 150, 151,  48, 10
 LTEXT   "&Red:", IDC_COLOR_RL /*1094*/,247,126,27,10
 EDITTEXT IDC_COLOR_EDIT_R, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 LTEXT   "&Green:", IDC_COLOR_GL /*1095*/,247,140,27,10
 EDITTEXT IDC_COLOR_EDIT_G, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 LTEXT   "&Blue:", IDC_COLOR_BL /*1096*/,247,154,27,10
 EDITTEXT IDC_COLOR_EDIT_B, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 LTEXT  "&Hue:" , IDC_COLOR_HL /*1091*/,200,126,24,10
 EDITTEXT IDC_COLOR_EDIT_H, 224,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 LTEXT  "#msgctxt#Saturation#&Sat:", IDC_COLOR_SL /*1092*/,200,140,24,10
 EDITTEXT IDC_COLOR_EDIT_S, 224,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 LTEXT  "#msgctxt#Luminance#&Lum:", IDC_COLOR_LL /*1093*/,200,154,24,10
 EDITTEXT IDC_COLOR_EDIT_L, 224,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
 CONTROL "" , IDC_COLOR_PREDEF, "STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
 CONTROL "" , IDC_COLOR_USRDEF, "STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
 CONTROL "" , IDC_COLOR_GRAPH, "STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
 CONTROL "" , IDC_COLOR_LUMBAR, "STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
 CONTROL "" , IDC_COLOR_RESULT, "STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
 DEFPUSHBUTTON "OK",  IDOK,  4, 167, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancel", IDCANCEL, 58, 167, 50, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Help", pshHelp,100,166, 44, 14
 PUSHBUTTON "&Add to Custom Colors",    IDC_COLOR_ADD /*1024*/, 152, 167, 144, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Define Custom Colors >>", IDC_COLOR_DEFINE /*1025*/,   4, 149, 142, 14, WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Color |  Sol&id", IDC_COLOR_RES, 300,200,4,14   /* just a dummy */
}



================================================
FILE: commdlg/commdlg.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{8914D84A-84BD-4F85-99AC-723F8AEABAEB}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>commdlg</RootNamespace>
    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v141</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>Unicode</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\PropertySheet.props" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
    <Import Project="..\PropertySheet.props" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <TargetExt>.dll16</TargetExt>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level3</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;COMMDLG_EXPORTS;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;DECLSPEC_HIDDEN=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>$(OutDir)user.lib;$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;comdlg32.lib;user32.lib</AdditionalDependencies>
      <ModuleDefinitionFile>commdlg.def</ModuleDefinitionFile>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level3</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;COMMDLG_EXPORTS;_X86_;__WINESRC__;__i386__;USE_COMPILER_EXCEPTIONS;HAVE_STRNCASECMP;HAVE__STRNICMP;_WINTERNL_;NtCurrentTeb=NtCurrentTeb__;inline=__inline;DECLSPEC_HIDDEN=;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>../wine</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <ModuleDefinitionFile>commdlg.def</ModuleDefinitionFile>
      <AdditionalDependencies>$(OutDir)user.lib;$(OutDir)winecrt0.lib;$(OutDir)libwine.lib;$(OutDir)krnl386.lib;comdlg32.lib;user32.lib</AdditionalDependencies>
      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="colordlg.c" />
    <ClCompile Include="filedlg.c" />
    <ClCompile Include="finddlg.c" />
    <ClCompile Include="fontdlg.c" />
    <ClCompile Include="printdlg.c" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="cdlg16.h" />
    <ClInclude Include="resource.h" />
  </ItemGroup>
  <ItemGroup>
    <None Include="commdlg.def" />
    <CustomBuild Include="commdlg.dll16.spec">
      <FileType>Document</FileType>
      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(OutDir)convspec" "%(Filename).spec" COMMDLG &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename).obj</Outputs>
      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(OutDir)convspec" "%(Filename).spec" COMMDLG &gt; "%(Filename).asm" &amp;&amp; "$(AsmPath)as" --32 -o "%(Filename).obj" "%(Filename).asm"</Command>
      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename).obj</Outputs>
    </CustomBuild>
  </ItemGroup>
  <ItemGroup>
    <Object Include="commdlg.dll16.obj" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="commdlg.rc" />
  </ItemGroup>
  <ItemGroup>
    <Image Include="dummy.bmp" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

================================================
FILE: commdlg/commdlg.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="ソース ファイル">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="ヘッダー ファイル">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="リソース ファイル">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="colordlg.c">
      <Filter>ソース ファイル</Filter>
    </ClCompile>
    <ClCompile Include="filedlg.c">
      <Filter>ソース ファイル</Filter>
    </ClCompile>
    <ClCompile Include="finddlg.c">
      <Filter>ソース ファイル</Filter>
    </ClCompile>
    <ClCompile Include="fontdlg.c">
      <Filter>ソース ファイル</Filter>
    </ClCompile>
    <ClCompile Include="printdlg.c">
      <Filter>ソース ファイル</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="resource.h">
      <Filter>ヘッダー ファイル</Filter>
    </ClInclude>
    <ClInclude Include="cdlg16.h">
      <Filter>ヘッダー ファイル</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <None Include="commdlg.def">
      <Filter>ソース ファイル</Filter>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Object Include="commdlg.dll16.obj">
      <Filter>ソース ファイル</Filter>
    </Object>
  </ItemGroup>
  <ItemGroup>
    <CustomBuild Include="commdlg.dll16.spec">
      <Filter>ソース ファイル</Filter>
    </CustomBuild>
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="commdlg.rc">
      <Filter>リソース ファイル</Filter>
    </ResourceCompile>
  </ItemGroup>
  <ItemGroup>
    <Image Include="dummy.bmp">
      <Filter>リソース ファイル</Filter>
    </Image>
  </ItemGroup>
</Project>

================================================
FILE: commdlg/filedlg.c
================================================
/*
 * COMMDLG - File Dialogs
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <assert.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wine/winbase16.h"
#include "wingdi.h"
#include "winuser.h"
#include "winternl.h"
#include "commdlg.h"
#include "cdlg16.h"
#include "wine/debug.h"
#include <windows.h>
#include "resource.h"
#include <DbgHelp.h>

WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
#define MAX_THUNK 5
COMMDLGTHUNK *thunk_array;
UINT WMFILEOK;
UINT WMHELPMSG;
UINT WMFINDMSG;
UINT WMCOLOROK;
UINT WMSHAREVI;
UINT WMWOWDirChange;

LPDLGTEMPLATEA resource_to_dialog32(HINSTANCE16 hInst, LPCSTR name, WORD *res);
LPDLGTEMPLATEA handle_to_dialog32(HGLOBAL16 hg, WORD *res);

LRESULT WINAPI DIALOG_CallDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, WNDPROC16 proc);
static UINT_PTR CALLBACK thunk_hook(COMMDLGTHUNK *thunk, HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
    /* window message hook? */
    if (msg == WM_INITDIALOG || msg == WMFILEOK || msg == WMHELPMSG || msg == WMFINDMSG || msg == WMCOLOROK || msg == WMSHAREVI)
    {
        lp = thunk->segofn16;
    }
    UINT_PTR result = DIALOG_CallDialogProc(hwnd, msg, wp, lp, (WNDPROC16)thunk->func);
    return result;
}

static void init_thunk()
{
    if (thunk_array)
        return;
    WMFILEOK = RegisterWindowMessageW(FILEOKSTRINGW);
    WMHELPMSG = RegisterWindowMessageW(HELPMSGSTRINGW);
    WMFINDMSG = RegisterWindowMessageW(FINDMSGSTRINGW);
    WMCOLOROK = RegisterWindowMessageW(COLOROKSTRINGW);
    WMSHAREVI = RegisterWindowMessageW(SHAREVISTRINGW);
    /* undocumented */
    WMWOWDirChange = RegisterWindowMessageW(L"WOWDirChange");
    thunk_array = VirtualAlloc(NULL, MAX_THUNK * sizeof(COMMDLGTHUNK), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
}

void delete_thunk(LPVOID func)
{
    if (func && (SIZE_T)thunk_array <= (SIZE_T)func && (SIZE_T)func <= (SIZE_T)(thunk_array + MAX_THUNK))
    {
        ((COMMDLGTHUNK*)func)->used = FALSE;
    }
}

COMMDLGTHUNK *allocate_thunk(SEGPTR ofnseg, SEGPTR func)
{
    init_thunk();
    for (int i = 0; i < MAX_THUNK; i++)
    {
        if (!thunk_array[i].used)
        {
            thunk_array[i].pop_eax  = 0x58;
            thunk_array[i].push     = 0x68;
            thunk_array[i].this_    = (DWORD)(thunk_array + i);
            thunk_array[i].push_eax = 0x50;
            thunk_array[i].mov_eax  = 0xB8;
            thunk_array[i].address  = (DWORD)thunk_hook;
            thunk_array[i].jmp      = 0xFF;
            thunk_array[i].eax      = 0xE0;
            thunk_array[i].used     = TRUE;
            thunk_array[i].func     = func;
            thunk_array[i].segofn16 = ofnseg;
            return thunk_array + i;
        }
    }
    return NULL;
}


static inline WORD get_word( const char **ptr )
{
    WORD ret = *(WORD *)*ptr;
    *ptr += sizeof(WORD);
    return ret;
}

static inline void copy_string( WORD **out, const char **in, DWORD maxlen )
{
    DWORD len = MultiByteToWideChar( CP_ACP, 0, *in, -1, *out, maxlen );
    *in += strlen(*in) + 1;
    *out += len;
}

static inline void copy_dword( WORD **out, const char **in )
{
    *(DWORD *)*out = *(DWORD *)*in;
    *in += sizeof(DWORD);
    *out += sizeof(DWORD) / sizeof(WORD);
}

static LPDLGTEMPLATEA convert_dialog( const char *p, DWORD size )
{
    LPDLGTEMPLATEA dlg;
    WORD len, count, *out, *end;

    if (!(dlg = HeapAlloc( GetProcessHeap(), 0, size * 2 ))) return NULL;
    out = (WORD *)dlg;
    end = out + size;
    copy_dword( &out, &p );  /* style */
    *out++ = 0; *out++ = 0;  /* exstyle */
    *out++ = count = (BYTE)*p++;  /* count */
    *out++ = get_word( &p );  /* x */
    *out++ = get_word( &p );  /* y */
    *out++ = get_word( &p );  /* cx */
    *out++ = get_word( &p );  /* cy */

    if ((BYTE)*p == 0xff)  /* menu */
    {
        p++;
        *out++ = 0xffff;
        *out++ = get_word( &p );
    }
    else copy_string( &out, &p, end - out );

    copy_string( &out, &p, end - out );  /* class */
    copy_string( &out, &p, end - out );  /* caption */

    if (dlg->style & DS_SETFONT)
    {
        *out++ = get_word( &p );  /* point size */
        copy_string( &out, &p, end - out );  /* face name */
    }

    /* controls */
    while (count--)
    {
        WORD x = get_word( &p );
        WORD y = get_word( &p );
        WORD cx = get_word( &p );
        WORD cy = get_word( &p );
        WORD id = get_word( &p );

        out = (WORD *)(((UINT_PTR)out + 3) & ~3);

        copy_dword( &out, &p );  /* style */
        *out++ = 0; *out++ = 0;  /* exstyle */
        *out++ = x;
        *out++ = y;
        *out++ = cx;
        *out++ = cy;
        *out++ = id;

        if (*p & 0x80)  /* class */
        {
            *out++ = 0xffff;
            *out++ = (BYTE)*p++;
        }
        else copy_string( &out, &p, end - out );

        if (*p & 0x80)  /* window */
        {
            *out++ = 0xffff;
            *out++ = get_word( &p );
        }
        else copy_string( &out, &p, end - out );

        len = (BYTE)*p++;  /* data */
        *out++ = (len + 1) & ~1;
        memcpy( out, p, len );
        p += len;
        out += (len + 1) / sizeof(WORD);
    }

    assert( out <= end );
    return dlg;
}

static UINT_PTR CALLBACK dummy_hook( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp )
{
    return FALSE;
}

/***********************************************************************
 *           FileOpenDlgProc   (COMMDLG.6)
 */
BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam)
{
    FIXME( "%04x %04x %04x %08lx: stub\n", hWnd16, wMsg, wParam, lParam );
    return FALSE;
}

/***********************************************************************
 *           FileSaveDlgProc   (COMMDLG.7)
 */
BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam)
{
    FIXME( "%04x %04x %04x %08lx: stub\n", hWnd16, wMsg, wParam, lParam );
    return FALSE;
}

DWORD get_ofn_flag(DWORD flag)
{
    return (flag | OFN_NOLONGNAMES) & ~OFN_ENABLETEMPLATE;
}
/***********************************************************************
 *           GetOpenFileName   (COMMDLG.1)
 *
 * Creates a dialog box for the user to select a file to open.
 *
 * RETURNS
 *    TRUE on success: user selected a valid file
 *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
 *
 * BUGS
 *    unknown, there are some FIXMEs left.
 */
BOOL16 WINAPI GetOpenFileName16( SEGPTR ofn ) /* [in/out] address of structure with data*/
{
    LPOPENFILENAME16 lpofn = MapSL(ofn);
    LPDLGTEMPLATEA template = NULL;
    OPENFILENAMEA ofn32;
    BOOL ret;
    DWORD count;
    WORD res = NULL;

    if (!lpofn) return FALSE;
    OPENFILENAME16 ofn16 = *lpofn;

    ofn32.lStructSize       = OPENFILENAME_SIZE_VERSION_400A;
    ofn32.hwndOwner         = HWND_32( lpofn->hwndOwner );
    ofn32.lpstrFilter       = MapSL( lpofn->lpstrFilter );
    ofn32.lpstrCustomFilter = MapSL( lpofn->lpstrCustomFilter );
    ofn32.nMaxCustFilter    = lpofn->nMaxCustFilter;
    ofn32.nFilterIndex      = lpofn->nFilterIndex;
    ofn32.lpstrFile         = MapSL( lpofn->lpstrFile );
    ofn32.nMaxFile          = lpofn->nMaxFile;
    ofn32.lpstrFileTitle    = MapSL( lpofn->lpstrFileTitle );
    ofn32.nMaxFileTitle     = lpofn->nMaxFileTitle;
    ofn32.lpstrInitialDir   = MapSL( lpofn->lpstrInitialDir );
    ofn32.lpstrTitle        = MapSL( lpofn->lpstrTitle );
    ofn32.Flags             = get_ofn_flag(lpofn->Flags | OFN_ENABLEHOOK);
    ofn32.nFileOffset       = lpofn->nFileOffset;
    ofn32.nFileExtension    = lpofn->nFileExtension;
    ofn32.lpstrDefExt       = MapSL( lpofn->lpstrDefExt );
    ofn32.lCustData         = lpofn->lCustData;
    ofn32.lpfnHook          = dummy_hook;  /* this is to force old 3.1 dialog style */
    ofn32.lpTemplateName    = NULL;
    ofn32.hInstance         = GetModuleHandleW(L"commdlg.dll16");

    if ((lpofn->Flags & OFN_ENABLETEMPLATE) || (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
    {
        if (lpofn->Flags & OFN_ENABLETEMPLATE)
            template = resource_to_dialog32(lpofn->hInstance, MapSL(lpofn->lpTemplateName), &res);
        else
            template = handle_to_dialog32(lpofn->hInstance, &res);
        ofn32.hInstance = template;
        ofn32.Flags |= OFN_ENABLETEMPLATEHANDLE;
    }

    if (lpofn->Flags & OFN_ENABLEHOOK)
    {
        ofn32.lpfnHook = (LPOFNHOOKPROC)allocate_thunk(ofn, (SEGPTR)lpofn->lpfnHook);
        ((COMMDLGTHUNK*)ofn32.lpfnHook)->ofn16 = ofn16;
        if (!ofn32.lpfnHook)
        {
            ERR("could not allocate GetOpenFileName16 thunk\n");
            ofn32.lpfnHook = dummy_hook;
        }
    }

    if (ofn32.lpstrFile && ofn32.lpstrFile[0])
        CharUpperBuffA(ofn32.lpstrFile, min(strlen(ofn32.lpstrFile), ofn32.nMaxFile));

    ReleaseThunkLock(&count);
    if ((ret = GetOpenFileNameA( &ofn32 )))
    {
        lpofn->nFilterIndex   = ofn32.nFilterIndex;
        lpofn->nFileOffset    = ofn32.nFileOffset;
        lpofn->nFileExtension = ofn32.nFileExtension;
        if (ofn32.lpstrFile && ofn32.lpstrFile[0])
            CharUpperBuffA(ofn32.lpstrFile, min(strlen(ofn32.lpstrFile), ofn32.nMaxFile));
    }
    RestoreThunkLock(count);
    if (res)
    {
        if (lpofn->Flags & OFN_ENABLETEMPLATE)
            FreeResource16(res);
        else if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
            WOWGlobalUnlock16(res);
    }
    delete_thunk(ofn32.lpfnHook);
    HeapFree( GetProcessHeap(), 0, template );
    return ret;
}

/***********************************************************************
 *           GetSaveFileName   (COMMDLG.2)
 *
 * Creates a dialog box for the user to select a file to save.
 *
 * RETURNS
 *    TRUE on success: user enters a valid file
 *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
 *
 * BUGS
 *    unknown. There are some FIXMEs left.
 */
BOOL16 WINAPI GetSaveFileName16( SEGPTR ofn ) /* [in/out] address of structure with data*/
{
    LPOPENFILENAME16 lpofn = MapSL(ofn);
    LPDLGTEMPLATEA template = NULL;
    OPENFILENAMEA ofn32;
    BOOL ret;
    DWORD count;
    WORD res = NULL;

    if (!lpofn) return FALSE;
    OPENFILENAME16 ofn16 = *lpofn;

    ofn32.lStructSize       = OPENFILENAME_SIZE_VERSION_400A;
    ofn32.hwndOwner         = HWND_32( lpofn->hwndOwner );
    ofn32.lpstrFilter       = MapSL( lpofn->lpstrFilter );
    ofn32.lpstrCustomFilter = MapSL( lpofn->lpstrCustomFilter );
    ofn32.nMaxCustFilter    = lpofn->nMaxCustFilter;
    ofn32.nFilterIndex      = lpofn->nFilterIndex;
    ofn32.lpstrFile         = MapSL( lpofn->lpstrFile );
    ofn32.nMaxFile          = lpofn->nMaxFile;
    ofn32.lpstrFileTitle    = MapSL( lpofn->lpstrFileTitle );
    ofn32.nMaxFileTitle     = lpofn->nMaxFileTitle;
    ofn32.lpstrInitialDir   = MapSL( lpofn->lpstrInitialDir );
    ofn32.lpstrTitle        = MapSL( lpofn->lpstrTitle );
    ofn32.Flags             = get_ofn_flag(lpofn->Flags | OFN_ENABLEHOOK);
    ofn32.nFileOffset       = lpofn->nFileOffset;
    ofn32.nFileExtension    = lpofn->nFileExtension;
    ofn32.lpstrDefExt       = MapSL( lpofn->lpstrDefExt );
    ofn32.lCustData         = lpofn->lCustData;
    ofn32.lpfnHook          = dummy_hook;  /* this is to force old 3.1 dialog style */
    ofn32.lpTemplateName    = NULL;
    ofn32.hInstance         = GetModuleHandleW(L"commdlg.dll16");

    if ((lpofn->Flags & OFN_ENABLETEMPLATE) || (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
    {
        if (lpofn->Flags & OFN_ENABLETEMPLATE)
            template = resource_to_dialog32(lpofn->hInstance, MapSL(lpofn->lpTemplateName), &res);
        else
            template = handle_to_dialog32(lpofn->hInstance, &res);
        ofn32.hInstance = template;
        ofn32.Flags |= OFN_ENABLETEMPLATEHANDLE;
    }

    if (lpofn->Flags & OFN_ENABLEHOOK)
    {
        ofn32.lpfnHook = (LPOFNHOOKPROC)allocate_thunk(ofn, (SEGPTR)lpofn->lpfnHook);
        ((COMMDLGTHUNK*)ofn32.lpfnHook)->ofn16 = ofn16;
        if (!ofn32.lpfnHook)
        {
            ERR("could not allocate GetOpenFileName16 thunk\n");
            ofn32.lpfnHook = dummy_hook;
        }
    }
    if (ofn32.lpstrFile && ofn32.lpstrFile[0])
        CharUpperBuffA(ofn32.lpstrFile, min(strlen(ofn32.lpstrFile), ofn32.nMaxFile));

    ReleaseThunkLock(&count);
    if ((ret = GetSaveFileNameA( &ofn32 )))
    {
        lpofn->nFilterIndex   = ofn32.nFilterIndex;
        lpofn->nFileOffset    = ofn32.nFileOffset;
        lpofn->nFileExtension = ofn32.nFileExtension;
        if (ofn32.lpstrFile && ofn32.lpstrFile[0])
            CharUpperBuffA(ofn32.lpstrFile, min(strlen(ofn32.lpstrFile), ofn32.nMaxFile));
    }
    RestoreThunkLock(count);
    if (res)
    {
        if (lpofn->Flags & OFN_ENABLETEMPLATE)
            FreeResource16(res);
        else if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
            WOWGlobalUnlock16(res);
    }
    delete_thunk(ofn32.lpfnHook);
    HeapFree( GetProcessHeap(), 0, template );
    return ret;
}


/***********************************************************************
 *	GetFileTitle		(COMMDLG.27)
 */
short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf)
{
	return GetFileTitleA(lpFile, lpTitle, cbBuf);
}


================================================
FILE: commdlg/finddlg.c
================================================
/*
 * COMMDLG - 16 bits Find & Replace Text Dialogs
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <ctype.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "wingdi.h"
#include "winuser.h"
#include "commdlg.h"
#include "cderr.h"
#include "cdlg16.h"

LRESULT WINAPI DIALOG_CallDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, WNDPROC16 proc);

LPDLGTEMPLATEA resource_to_dialog32(HINSTANCE16 hInst, LPCSTR name, WORD *res);
LPDLGTEMPLATEA handle_to_dialog32(HGLOBAL16 hg, WORD *res);

/***********************************************************************
 *                              FINDDLG_WMCommand               [internal]
 */
static LRESULT FINDDLG_WMCommand(HWND hWnd, WPARAM wParam,
                                 HWND hwndOwner, LPDWORD lpFlags,
                                 LPSTR lpstrFindWhat, WORD wFindWhatLen)
{
    int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA );
    int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA );

    switch (LOWORD(wParam)) {
	case IDOK:
            GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
	    if (IsDlgButtonChecked(hWnd, rad2))
		*lpFlags |= FR_DOWN;
		else *lpFlags &= ~FR_DOWN;
	    if (IsDlgButtonChecked(hWnd, chx1))
		*lpFlags |= FR_WHOLEWORD;
		else *lpFlags &= ~FR_WHOLEWORD;
	    if (IsDlgButtonChecked(hWnd, chx2))
		*lpFlags |= FR_MATCHCASE;
		else *lpFlags &= ~FR_MATCHCASE;
            *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
	    *lpFlags |= FR_FINDNEXT;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    return TRUE;
	case IDCANCEL:
            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
	    *lpFlags |= FR_DIALOGTERM;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    DestroyWindow(hWnd);
	    return TRUE;
	case pshHelp:
	    /* FIXME : should lpfr structure be passed as an argument ??? */
	    SendMessageA(hwndOwner, uHelpMessage, 0, 0);
	    return TRUE;
    }
    return FALSE;
}


/***********************************************************************
 *           find_text_dlgproc   (internal)
 */
static INT_PTR CALLBACK find_text_dlgproc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE16 lpfr;
    DWORD lpFlags;
    LRESULT ret = FALSE;
    if (wMsg == WM_INITDIALOG)
    {
        lpfr = MapSL(lParam);
        SetWindowLongPtrW(hWnd, DWLP_USER, lParam);
        lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
        lpFlags = lpfr->Flags;
        /*
         * FIXME : If the initial FindWhat string is empty, we should disable the
         * FindNext (IDOK) button.  Only after typing some text, the button should be
         * enabled.
         */
        SetDlgItemTextA(hWnd, edt1, lpfr->lpstrFindWhat);
        CheckRadioButton(hWnd, rad1, rad2, (lpFlags & FR_DOWN) ? rad2 : rad1);
        if (lpFlags & (FR_HIDEUPDOWN | FR_NOUPDOWN)) {
            EnableWindow(GetDlgItem(hWnd, rad1), FALSE);
            EnableWindow(GetDlgItem(hWnd, rad2), FALSE);
        }
        if (lpFlags & FR_HIDEUPDOWN) {
            ShowWindow(GetDlgItem(hWnd, rad1), SW_HIDE);
            ShowWindow(GetDlgItem(hWnd, rad2), SW_HIDE);
            ShowWindow(GetDlgItem(hWnd, grp1), SW_HIDE);
        }
        CheckDlgButton(hWnd, chx1, (lpFlags & FR_WHOLEWORD) ? 1 : 0);
        if (lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD))
            EnableWindow(GetDlgItem(hWnd, chx1), FALSE);
        if (lpFlags & FR_HIDEWHOLEWORD)
            ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
        CheckDlgButton(hWnd, chx2, (lpFlags & FR_MATCHCASE) ? 1 : 0);
        if (lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE))
            EnableWindow(GetDlgItem(hWnd, chx2), FALSE);
        if (lpFlags & FR_HIDEMATCHCASE)
            ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE);
        if (!(lpFlags & FR_SHOWHELP)) {
            EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE);
            ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
        }
        ret = TRUE;
        if (lpFlags & FR_ENABLEHOOK)
            ret = DIALOG_CallDialogProc(hWnd, wMsg, wParam, lParam, lpfr->lpfnHook);
        if (ret) ShowWindow(hWnd, SW_SHOWNORMAL);
        return TRUE;
    }
    lpfr = MapSL(GetWindowLongPtrW(hWnd, DWLP_USER));
    if (lpfr && (lpfr->Flags & FR_ENABLEHOOK))
        ret = DIALOG_CallDialogProc(hWnd, wMsg, wParam, lParam, lpfr->lpfnHook);
    if (!ret)
    {
        switch (wMsg)
        {
            case WM_COMMAND:
                return FINDDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner),
                    &lpfr->Flags, MapSL(lpfr->lpstrFindWhat), lpfr->wFindWhatLen);
        }
    }
    return FALSE;
}


/***********************************************************************
 *           FindText   (COMMDLG.11)
 */
HWND16 WINAPI FindText16( SEGPTR find )
{
    FINDREPLACE16 *fr16 = MapSL( find );
    LPDLGTEMPLATEA template = NULL;
    HWND16 ret;

    if ((fr16->Flags & FR_ENABLETEMPLATE) || (fr16->Flags & FR_ENABLETEMPLATEHANDLE))
    {
        if (fr16->Flags & FR_ENABLETEMPLATE)
            template = resource_to_dialog32(fr16->hInstance, MapSL(fr16->lpTemplateName), NULL);
        else
            template = handle_to_dialog32(fr16->hInstance, NULL);
        ret = HWND_16(CreateDialogIndirectParamA(fr16->hInstance, template,
                                HWND_32(fr16->hwndOwner), find_text_dlgproc, find));
        HeapFree(GetProcessHeap(), 0, template);
    }
    else
        ret = HWND_16( CreateDialogParamA( GetModuleHandleA("comdlg32.dll"), MAKEINTRESOURCEA(FINDDLGORD),
                                        HWND_32(fr16->hwndOwner), find_text_dlgproc, find ));
    return ret;
}


/***********************************************************************
 *           FindTextDlgProc   (COMMDLG.13)
 */
BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
                                 LPARAM lParam)
{
    return find_text_dlgproc( HWND_32(hWnd16), wMsg, wParam, lParam );
}


/***********************************************************************
 *                              REPLACEDLG_WMInitDialog         [internal]
 */
static LRESULT REPLACEDLG_WMInitDialog(HWND hWnd, LPARAM lParam,
		    LPDWORD lpFlags, LPCSTR lpstrFindWhat,
		    LPCSTR lpstrReplaceWith)
{
}


/***********************************************************************
 *                              REPLACEDLG_WMCommand            [internal]
 */
static LRESULT REPLACEDLG_WMCommand(HWND hWnd, WPARAM wParam,
                                    HWND hwndOwner, LPDWORD lpFlags,
                                    LPSTR lpstrFindWhat, WORD wFindWhatLen,
                                    LPSTR lpstrReplaceWith, WORD wReplaceWithLen)
{
    int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA );
    int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA );

    switch (LOWORD(wParam)) {
	case IDOK:
            GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
            GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
	    if (IsDlgButtonChecked(hWnd, chx1))
		*lpFlags |= FR_WHOLEWORD;
		else *lpFlags &= ~FR_WHOLEWORD;
	    if (IsDlgButtonChecked(hWnd, chx2))
		*lpFlags |= FR_MATCHCASE;
		else *lpFlags &= ~FR_MATCHCASE;
            *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
	    *lpFlags |= FR_FINDNEXT;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    return TRUE;
	case IDCANCEL:
            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
	    *lpFlags |= FR_DIALOGTERM;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    DestroyWindow(hWnd);
	    return TRUE;
	case psh1:
            GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
            GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
	    if (IsDlgButtonChecked(hWnd, chx1))
		*lpFlags |= FR_WHOLEWORD;
		else *lpFlags &= ~FR_WHOLEWORD;
	    if (IsDlgButtonChecked(hWnd, chx2))
		*lpFlags |= FR_MATCHCASE;
		else *lpFlags &= ~FR_MATCHCASE;
            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACEALL | FR_DIALOGTERM);
	    *lpFlags |= FR_REPLACE;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    return TRUE;
	case psh2:
            GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
            GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
	    if (IsDlgButtonChecked(hWnd, chx1))
		*lpFlags |= FR_WHOLEWORD;
		else *lpFlags &= ~FR_WHOLEWORD;
	    if (IsDlgButtonChecked(hWnd, chx2))
		*lpFlags |= FR_MATCHCASE;
		else *lpFlags &= ~FR_MATCHCASE;
            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_DIALOGTERM);
	    *lpFlags |= FR_REPLACEALL;
	    SendMessageW( hwndOwner, uFindReplaceMessage, 0,
                          GetWindowLongPtrW(hWnd, DWLP_USER) );
	    return TRUE;
	case pshHelp:
	    /* FIXME : should lpfr structure be passed as an argument ??? */
	    SendMessageA(hwndOwner, uHelpMessage, 0, 0);
	    return TRUE;
    }
    return FALSE;
}


/***********************************************************************
 *           replace_text_dlgproc
 */
static INT_PTR CALLBACK replace_text_dlgproc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE16 lpfr;
    DWORD lpFlags;
    LRESULT ret = FALSE;
    if (wMsg == WM_INITDIALOG)
    {
        lpfr=MapSL(lParam);
        SetWindowLongPtrW(hWnd, DWLP_USER, lParam);
        lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
        lpFlags = lpfr->Flags;
        /*
         * FIXME : If the initial FindWhat string is empty, we should disable the FindNext /
         * Replace / ReplaceAll buttons.  Only after typing some text, the buttons should be
         * enabled.
         */
        SetDlgItemTextA(hWnd, edt1, lpfr->lpstrFindWhat);
        SetDlgItemTextA(hWnd, edt2, lpfr->lpstrReplaceWith);
        CheckDlgButton(hWnd, chx1, (lpFlags & FR_WHOLEWORD) ? 1 : 0);
        if (lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD))
            EnableWindow(GetDlgItem(hWnd, chx1), FALSE);
        if (lpFlags & FR_HIDEWHOLEWORD)
            ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
        CheckDlgButton(hWnd, chx2, (lpFlags & FR_MATCHCASE) ? 1 : 0);
        if (lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE))
            EnableWindow(GetDlgItem(hWnd, chx2), FALSE);
        if (lpFlags & FR_HIDEMATCHCASE)
            ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE);
        if (!(lpFlags & FR_SHOWHELP)) {
            EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE);
            ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
        }
        ret = TRUE;
        if (lpFlags & FR_ENABLEHOOK)
            ret = DIALOG_CallDialogProc(hWnd, wMsg, wParam, lParam, lpfr->lpfnHook);
        if (ret) ShowWindow(hWnd, SW_SHOWNORMAL);
        return TRUE;
    }
    lpfr = MapSL(GetWindowLongPtrW(hWnd, DWLP_USER));
    if (lpfr && (lpfr->Flags & FR_ENABLEHOOK))
        ret = DIALOG_CallDialogProc(hWnd, wMsg, wParam, lParam, lpfr->lpfnHook);
    if (!ret)
    {
        switch (wMsg)
        {
            case WM_COMMAND:
                return REPLACEDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner),
                        &lpfr->Flags, MapSL(lpfr->lpstrFindWhat),
                        lpfr->wFindWhatLen, MapSL(lpfr->lpstrReplaceWith),
                        lpfr->wReplaceWithLen);
        }
    }
    return FALSE;
}


/***********************************************************************
 *           ReplaceText   (COMMDLG.12)
 */
HWND16 WINAPI ReplaceText16( SEGPTR find )
{
    FINDREPLACE16 *fr16 = MapSL( find );
    LPDLGTEMPLATEA template = NULL;
    HWND16 ret;

    if ((fr16->Flags & FR_ENABLETEMPLATE) || (fr16->Flags & FR_ENABLETEMPLATEHANDLE))
    {
        if (fr16->Flags & FR_ENABLETEMPLATE)
            template = resource_to_dialog32(fr16->hInstance, MapSL(fr16->lpTemplateName), NULL);
        else
            template = handle_to_dialog32(fr16->hInstance, NULL);
        ret = HWND_16(CreateDialogIndirectParamA(fr16->hInstance, template,
                                HWND_32(fr16->hwndOwner), replace_text_dlgproc, find));
        HeapFree(GetProcessHeap(), 0, template);
    }
    else
        ret = HWND_16( CreateDialogParamA( GetModuleHandleA("comdlg32.dll"), MAKEINTRESOURCEA(FINDDLGORD),
                                        HWND_32(fr16->hwndOwner), replace_text_dlgproc, find ));
    return ret;
}


/***********************************************************************
 *           ReplaceTextDlgProc   (COMMDLG.14)
 */
BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
                                    LPARAM lParam)
{
    return replace_text_dlgproc( HWND_32(hWnd16), wMsg, wParam, lParam );
}


/***********************************************************************
 *	CommDlgExtendedError			(COMMDLG.26)
 */
DWORD WINAPI CommDlgExtendedError16(void)
{
    return CommDlgExtendedError();
}


================================================
FILE: commdlg/fontdlg.c
================================================
/*
 * COMMDLG - Font Dialog
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <ctype.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "commdlg.h"
#include "wine/debug.h"
#include "cderr.h"
#include "cdlg16.h"

WINE_DEFAULT_DEBUG_CHANNEL(commdlg);

LPDLGTEMPLATEA resource_to_dialog32(HINSTANCE16 hInst, LPCSTR name, WORD *res);
LPDLGTEMPLATEA handle_to_dialog32(HGLOBAL16 hg, WORD *res);

/***********************************************************************
 *                FontFamilyEnumProc                     (COMMDLG.19)
 */
INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics,
                                   UINT16 nFontType, LPARAM lParam )
{
    FIXME( "%08x %08x %u %lx\n", logfont, metrics, nFontType, lParam );
    return 0;
}

/***********************************************************************
 *                 FontStyleEnumProc                     (COMMDLG.18)
 */
INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics,
                                  UINT16 nFontType, LPARAM lParam )
{
    FIXME( "%08x %08x %u %lx\n", logfont, metrics, nFontType, lParam );
    return 0;
}

/***********************************************************************
 *                        ChooseFont   (COMMDLG.15)
 */
BOOL16 WINAPI ChooseFont16(SEGPTR cf)
{
    LPCHOOSEFONT16 lpChFont = MapSL(cf);
    CHOOSEFONTA cf32;
    LOGFONTA lf32;
    LOGFONT16 *font16;
    LPDLGTEMPLATEA template = NULL;

    if (!lpChFont) return FALSE;
    font16 = MapSL(lpChFont->lpLogFont);

    cf32.lStructSize = sizeof(CHOOSEFONTA);
    cf32.hwndOwner = HWND_32(lpChFont->hwndOwner);
    cf32.hDC = HDC_32(lpChFont->hDC);
    cf32.iPointSize = lpChFont->iPointSize;
    cf32.Flags = lpChFont->Flags & ~(CF_ENABLETEMPLATEHANDLE | CF_ENABLETEMPLATE | CF_ENABLEHOOK);
    cf32.rgbColors = lpChFont->rgbColors;
    cf32.lCustData = lpChFont->lCustData;
    cf32.lpfnHook = NULL;
    cf32.hInstance = GetModuleHandleA("comdlg32.dll");
    cf32.nFontType = lpChFont->nFontType;
    cf32.nSizeMax = lpChFont->nSizeMax;
    cf32.nSizeMin = lpChFont->nSizeMin;
    cf32.lpLogFont = &lf32;

    lf32.lfHeight = font16->lfHeight;
    lf32.lfWidth = font16->lfWidth;
    lf32.lfEscapement = font16->lfEscapement;
    lf32.lfOrientation = font16->lfOrientation;
    lf32.lfWeight = font16->lfWeight;
    lf32.lfItalic = font16->lfItalic;
    lf32.lfUnderline = font16->lfUnderline;
    lf32.lfStrikeOut = font16->lfStrikeOut;
    lf32.lfCharSet = font16->lfCharSet;
    lf32.lfOutPrecision = font16->lfOutPrecision;
    lf32.lfClipPrecision = font16->lfClipPrecision;
    lf32.lfQuality = font16->lfQuality;
    lf32.lfPitchAndFamily = font16->lfPitchAndFamily;
    lstrcpynA( lf32.lfFaceName, font16->lfFaceName, LF_FACESIZE );

    if ((lpChFont->Flags & CF_ENABLETEMPLATE) || (lpChFont->Flags & CF_ENABLETEMPLATEHANDLE))
    {
        if (lpChFont->Flags & CF_ENABLETEMPLATE)
            template = resource_to_dialog32(lpChFont->hInstance, MapSL(lpChFont->lpTemplateName), NULL);
        else
            template = handle_to_dialog32(lpChFont->hInstance, NULL);
        cf32.hInstance = (HGLOBAL)template;
        cf32.Flags |= CF_ENABLETEMPLATEHANDLE;
    }

    if (lpChFont->Flags & CF_ENABLEHOOK)
    {
        COMMDLGTHUNK *thunk = allocate_thunk(cf, (SEGPTR)lpChFont->lpfnHook);
        cf32.Flags |= CF_ENABLEHOOK;
        cf32.lpfnHook = (LPCFHOOKPROC)thunk;
    }

    if (!ChooseFontA( &cf32 )) return FALSE;

    lpChFont->iPointSize = cf32.iPointSize;
    lpChFont->Flags = cf32.Flags;
    lpChFont->rgbColors = cf32.rgbColors;
    lpChFont->lCustData = cf32.lCustData;
    lpChFont->nFontType = cf32.nFontType;

    font16->lfHeight = lf32.lfHeight;
    font16->lfWidth = lf32.lfWidth;
    font16->lfEscapement = lf32.lfEscapement;
    font16->lfOrientation = lf32.lfOrientation;
    font16->lfWeight = lf32.lfWeight;
    font16->lfItalic = lf32.lfItalic;
    font16->lfUnderline = lf32.lfUnderline;
    font16->lfStrikeOut = lf32.lfStrikeOut;
    font16->lfCharSet = lf32.lfCharSet;
    font16->lfOutPrecision = lf32.lfOutPrecision;
    font16->lfClipPrecision = lf32.lfClipPrecision;
    font16->lfQuality = lf32.lfQuality;
    font16->lfPitchAndFamily = lf32.lfPitchAndFamily;
    lstrcpynA( font16->lfFaceName, lf32.lfFaceName, LF_FACESIZE );
    delete_thunk(cf32.lpfnHook);
    HeapFree(GetProcessHeap(), 0, template);
    return TRUE;
}

/***********************************************************************
 *           FormatCharDlgProc   (COMMDLG.16)
             FIXME: 1. some strings are "hardcoded", but it's better load from sysres
                    2. some CF_.. flags are not supported
                    3. some TType extensions
 */
BOOL16 CALLBACK FormatCharDlgProc16(HWND16 hDlg16, UINT16 message,
				   WPARAM16 wParam, LPARAM lParam)
{
    FIXME( "%04x %04x %04x %08lx: stub\n", hDlg16, message, wParam, lParam );
    return FALSE;
}


================================================
FILE: commdlg/printdlg.c
================================================
/*
 * COMMDLG - Print Dialog
 *
 * Copyright 1994 Martin Ayotte
 * Copyright 1996 Albrecht Kleine
 * Copyright 1999 Klaas van Gend
 * Copyright 2000 Huw D M Davies
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <ctype.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>

#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "wine/wingdi16.h"
#include "winuser.h"
#include "wine/winuser16.h"
#include "commdlg.h"
#include "dlgs.h"
#include "wine/debug.h"
#include "cderr.h"
#include "winspool.h"
#include "cdlg16.h"

WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
/* Maximum length of a device name */
#define CCHDEVICENAME16 32

/* Maximum length of a paper name */
#define CCHPAPERNAME16  64
#pragma pack(push, 1)
typedef struct {
    char  dmDeviceName[CCHDEVICENAME16];
    UINT16  dmSpecVersion;
    UINT16  dmDriverVersion;
    UINT16  dmSize;
    UINT16  dmDriverExtra;
    DWORD dmFields;
    INT16   dmOrientation;
    INT16   dmPaperSize;
    INT16   dmPaperLength;
    INT16   dmPaperWidth;
    INT16   dmScale;
    INT16   dmCopies;
    INT16   dmDefaultSource;
    INT16   dmPrintQuality;
    INT16   dmColor;
    INT16   dmDuplex;
    INT16   dmYResolution;
    INT16   dmTTOption;
} DEVMODE16, *LPDEVMODE16;
#pragma pack(pop)
//sizeof(DEVMODE16) != sizeof(DEVMODEA)
void DEVMODE16To32(CONST DEVMODE16 *src, LPDEVMODEA dst)
{
    memcpy(dst->dmDeviceName, src->dmDeviceName, min(CCHDEVICENAME16, CCHDEVICENAME));
    dst->dmDeviceName[CCHDEVICENAME - 1] = 0;
    dst->dmSpecVersion = 0x30a;
    dst->dmDriverVersion = src->dmDriverVersion;
    dst->dmSize = sizeof(DEVMODEA);
    dst->dmDriverExtra = 0;
    dst->dmFields = src->dmFields & 0x7fbf;
    dst->dmOrientation = src->dmOrientation;
    dst->dmPaperSize = src->dmPaperSize;
    dst->dmPaperLength = src->dmPaperLength;
    dst->dmPaperWidth = src->dmPaperWidth;
    dst->dmScale = src->dmScale;
    dst->dmCopies = src->dmCopies;
    dst->dmDefaultSource = src->dmDefaultSource;
    dst->dmPrintQuality = src->dmPrintQuality;
    dst->dmColor = src->dmColor;
    dst->dmDuplex = src->dmDuplex;
    dst->dmYResolution = src->dmYResolution;
    dst->dmTTOption = src->dmTTOption;
}
void DEVMODE32To16(LPDEVMODE16 dst, const LPDEVMODEA src)
{
    memcpy(dst->dmDeviceName, src->dmDeviceName, min(CCHDEVICENAME16, CCHDEVICENAME));
    dst->dmDeviceName[CCHDEVICENAME16 - 1] = 0;
    dst->dmSpecVersion = 0x30a;
    dst->dmDriverVersion = src->dmDriverVersion;
    dst->dmSize = sizeof(DEVMODE16);
    dst->dmDriverExtra = 0;
    dst->dmFields = src->dmFields & 0x7fbf;
    dst->dmOrientation = src->dmOrientation;
    dst->dmPaperSize = src->dmPaperSize;
    dst->dmPaperLength = src->dmPaperLength;
    dst->dmPaperWidth = src->dmPaperWidth;
    dst->dmScale = src->dmScale;
    dst->dmCopies = src->dmCopies;
    dst->dmDefaultSource = src->dmDefaultSource;
    dst->dmPrintQuality = src->dmPrintQuality;
    dst->dmColor = src->dmColor;
    dst->dmDuplex = src->dmDuplex;
    dst->dmYResolution = src->dmYResolution;
    dst->dmTTOption = src->dmTTOption;
}

static void global_handle_to_16( HGLOBAL16 *h16, HGLOBAL handle )
{
    DWORD size;
    HGLOBAL16 ret;

    if (!handle) return;
    size = GlobalSize( handle );
    if (*h16) ret = GlobalReAlloc16( *h16, size, GMEM_MOVEABLE );
    else ret = GlobalAlloc16( GMEM_MOVEABLE, size );
    if (ret)
    {
        void *src = GlobalLock( handle );
        void *dst = GlobalLock16( ret );
        memcpy( dst, src, size );
        GlobalUnlock( handle );
        GlobalUnlock16( ret );
        *h16 = ret;
    }
}

static HGLOBAL global_handle_from_16( HGLOBAL16 handle )
{
    DWORD size;
    HGLOBAL ret;

    if (!handle) return 0;
    size = GlobalSize16( handle );
    if ((ret = GlobalAlloc( GMEM_MOVEABLE, size )))
    {
        void *src = GlobalLock16( handle );
        void *dst = GlobalLock( ret );
        memcpy( dst, src, size );
        GlobalUnlock16( handle );
        GlobalUnlock( ret );
    }
    return ret;
}

LPDLGTEMPLATEA resource_to_dialog32(HINSTANCE16 hInst, LPCSTR name, WORD *res)
{
    HRSRC16 reso = FindResource16(hInst, name, (LPCSTR)RT_DIALOG);
    HGLOBAL16 handle = LoadResource16(hInst, reso);
    DWORD size = SizeofResource16(hInst, reso);
    SEGPTR ptr16 = WOWGlobalLock16(handle);
    DWORD size2;

    LPDLGTEMPLATEA r = dialog_template16_to_template32(hInst, ptr16, &size2, NULL);
    if (!res)
        FreeResource16(handle);
    else
        res = ptr16;
    return r;
}

LPDLGTEMPLATEA handle_to_dialog32(HGLOBAL16 hg, WORD *res)
{
    DWORD size2;
    SEGPTR ptr16 = WOWGlobalLock16(hg);
    LPDLGTEMPLATEA r = dialog_template16_to_template32(NULL, ptr16, &size2, NULL);
    if (!res)
        WOWGlobalUnlock16(hg);
    else
        res = ptr16;
    return r;
}

/**********************************************************************
 *
 *      16 bit commdlg
 */

/***********************************************************************
 *           PrintDlg   (COMMDLG.20)
 *
 *  Displays the PRINT dialog box, which enables the user to specify
 *  specific properties of the print job.
 *
 * RETURNS
 *  nonzero if the user pressed the OK button
 *  zero    if the user cancelled the window or an error occurred
 *
 * BUGS
 *  * calls up to the 32-bit versions of the Dialogs, which look different
 *  * Customizing is *not* implemented.
 */

BOOL16 WINAPI PrintDlg16( SEGPTR pd )
{
    LPPRINTDLG16 lppd = MapSL(pd);
    PRINTDLGA pd32;
    BOOL ret;
    HINSTANCE16 hInst;
    LPDLGTEMPLATEA template_setup = NULL;
    LPDLGTEMPLATEA template_print = NULL;
    HGLOBAL *hdma = NULL;
    if (lppd->hDevMode)
    {
        hdma = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(DEVMODEA));
        DEVMODE16To32(GlobalLock16(lppd->hDevMode), GlobalLock(hdma));
        GlobalUnlock(hdma);
        GlobalUnlock16(lppd->hDevMode);
    }

    if (!lppd) return PrintDlgA(NULL); /* generate failure with CDERR_INITIALIZATION */

    pd32.lStructSize = sizeof(pd32);
    pd32.Flags       = lppd->Flags & ~(PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE |
                                       PD_ENABLESETUPTEMPLATE | PD_ENABLESETUPTEMPLATEHANDLE |
                                       PD_ENABLEPRINTHOOK | PD_ENABLESETUPHOOK);
    pd32.hwndOwner   = HWND_32(lppd->hwndOwner);
    pd32.hDevMode    = hdma; 
    pd32.hDevNames   = global_handle_from_16( lppd->hDevNames );
    pd32.nFromPage   = lppd->nFromPage;
    pd32.nToPage     = lppd->nToPage;
    pd32.nMinPage    = lppd->nMinPage;
    pd32.nMaxPage    = lppd->nMaxPage;
    pd32.nCopies     = lppd->nCopies;
    pd32.lpfnPrintHook = NULL;
    pd32.lpfnSetupHook = NULL;
    hInst = lppd->hInstance;

    if ((lppd->Flags & PD_ENABLEPRINTTEMPLATE) || (lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE))
    {
        if (lppd->Flags & PD_ENABLEPRINTTEMPLATE)
            template_print = resource_to_dialog32(hInst, MapSL(lppd->lpPrintTemplateName), NULL);
        else
            template_print = handle_to_dialog32(lppd->hPrintTemplate, NULL);
        pd32.hPrintTemplate = (HGLOBAL)template_print;
        pd32.Flags |= PD_ENABLEPRINTTEMPLATEHANDLE;
    }
    if ((lppd->Flags & PD_ENABLESETUPTEMPLATE) || (lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE))
    {
        if (lppd->Flags & PD_ENABLESETUPTEMPLATE)
            template_setup = resource_to_dialog32(hInst, MapSL(lppd->lpSetupTemplateName), NULL);
        else
            template_setup = handle_to_dialog32(lppd->hSetupTemplate, NULL);
        pd32.hSetupTemplate = (HGLOBAL)template_setup;
        pd32.Flags |= PD_ENABLESETUPTEMPLATEHANDLE;
    }
    if (lppd->Flags & PD_ENABLEPRINTHOOK)
    {
        COMMDLGTHUNK *thunk = allocate_thunk(pd, (SEGPTR)lppd->lpfnPrintHook);
        pd32.Flags |= PD_ENABLEPRINTHOOK;
        pd32.lpfnPrintHook = (LPPRINTHOOKPROC)thunk;
    }
    if (lppd->Flags & PD_ENABLESETUPHOOK)
    {
        COMMDLGTHUNK *thunk = allocate_thunk(pd, (SEGPTR)lppd->lpfnSetupHook);
        pd32.Flags |= PD_ENABLESETUPHOOK;
        pd32.lpfnSetupHook = (LPSETUPHOOKPROC)thunk;
    }

    /* Generate failure with CDERR_STRUCTSIZE, when needed */
    if (lppd->lStructSize != sizeof(PRINTDLG16)) pd32.lStructSize--;

    if ((ret = PrintDlgA( &pd32 )))
    {
        lppd->hDC = HDC_16( pd32.hDC );
        global_handle_to_16( &lppd->hDevNames, pd32.hDevNames );

        lppd->nFromPage   = pd32.nFromPage;
        lppd->nToPage     = pd32.nToPage;
        lppd->nMinPage    = pd32.nMinPage;
        lppd->nMaxPage    = pd32.nMaxPage;
        lppd->nCopies     = pd32.nCopies;
        if (pd32.hDevMode)
        {
            if (!lppd->hDevMode)
                lppd->hDevMode = GlobalAlloc16(GMEM_MOVEABLE, sizeof(DEVMODE16));
            DEVMODE32To16(GlobalLock16(lppd->hDevMode), GlobalLock(pd32.hDevMode));
            GlobalUnlock(pd32.hDevMode);
            GlobalUnlock16(lppd->hDevMode);
        }
    }
    GlobalFree( pd32.hDevNames );
    GlobalFree( pd32.hDevMode );
    delete_thunk(pd32.lpfnPrintHook);
    delete_thunk(pd32.lpfnSetupHook);
    HeapFree(GetProcessHeap(), 0, template_setup);
    HeapFree(GetProcessHeap(), 0, template_print);
    return ret;
}

/***********************************************************************
 *           PrintDlgProc   (COMMDLG.21)
 */
BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam)
{
    FIXME( "%04x %04x %04x %08lx: stub\n", hDlg16, uMsg, wParam, lParam );
    return FALSE;
}

/***********************************************************************
 *           PrintSetupDlgProc   (COMMDLG.22)
 */
BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
				   LPARAM lParam)
{
  HWND hWnd = HWND_32(hWnd16);
  switch (wMsg)
    {
    case WM_INITDIALOG:
      TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
      ShowWindow(hWnd, SW_SHOWNORMAL);
      return (TRUE);
    case WM_COMMAND:
      switch (wParam) {
      case IDOK:
	EndDialog(hWnd, TRUE);
	return(TRUE);
      case IDCANCEL:
	EndDialog(hWnd, FALSE);
	return(TRUE);
      }
      return(FALSE);
    }
  return FALSE;
}


================================================
FILE: commdlg/resource.h
================================================
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ ŐꂽCN[h t@CB
// commdlg.rc Ŏgp
//
#define IDB_BITMAP1                     101

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif


================================================
FILE: compobj/CMakeLists.txt
================================================
file(GLOB SOURCE *.c *.cpp *.rc)
add_library(compobj SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/compobj.def compobj.dll16.obj)
include_directories(../wine ${CMAKE_BINARY_DIR})
add_definitions(-D_X86_ -D__WINESRC__ -D__i386__ -DHAVE_STRNCASECMP -DHAVE__STRNICMP -D_WINTERNL_ -DNtCurrentTeb=NtCurrentTeb__ -DDECLSPEC_HIDDEN= -Dstrncasecmp=_strnicmp)
spec_build(compobj.dll16 compobj)
target_link_libraries(compobj libwine winecrt0 krnl386 ole2 ole32.lib)
set_target_properties(compobj PROPERTIES SUFFIX ".dll16")


================================================
FILE: compobj/Makefile.in
================================================
MODULE    = compobj.dll16
IMPORTS   = uuid ole32 advapi32
EXTRADLLFLAGS = -m16 -Wb,--main-module,ole32.dll

C_SRCS = compobj.c


================================================
FILE: compobj/compobj.c
================================================
/*
 * 16 bit ole functions
 *
 * Copyright 1995 Martin von Loewis
 * Copyright 1998 Justin Bradford
 * Copyright 1999 Francis Beaudet
 * Copyright 1999 Sylvain St-Germain
 * Copyright 2002 Marcus Meissner
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "config.h"

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>

#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "objbase.h"
#include "ole2.h"
#include "rpc.h"
#include "winerror.h"
#include "winreg.h"
#include "wownt32.h"
#include "wtypes.h"
#include "wine/unicode.h"
#include "wine/winbase16.h"

#include "wine/debug.h"
#include "../ole2/ifs.h"

WINE_DEFAULT_DEBUG_CHANNEL(ole);
WINE_DECLARE_DEBUG_CHANNEL(olemalloc);

#define CHARS_IN_GUID 39


static HTASK16 hETask = 0;
static WORD Table_ETask[62];

static LPMALLOC16 currentMalloc16=NULL;

/* --- IMalloc16 implementation */


typedef struct
{
        IMalloc16 IMalloc16_iface;
        DWORD     ref;
} IMalloc16Impl;

static inline IMalloc16Impl *impl_from_IMalloc16(IMalloc16 *iface)
{
        return CONTAINING_RECORD(iface, IMalloc16Impl, IMalloc16_iface);
}

/******************************************************************************
 *		IMalloc16_QueryInterface	[COMPOBJ.500]
 */
HRESULT CDECL IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

	TRACE_(olemalloc)("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
	if (	!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
		!memcmp(&IID_IMalloc,refiid,sizeof(IID_IMalloc))
	) {
		*obj = This;
		return 0;
	}
	return OLE_E_ENUM_NOMORE;
}

/******************************************************************************
 *		IMalloc16_AddRef	[COMPOBJ.501]
 */
ULONG CDECL IMalloc16_fnAddRef(IMalloc16* iface) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

	TRACE_(olemalloc)("(%p)->AddRef()\n",This);
	return 1; /* cannot be freed */
}

/******************************************************************************
 *		IMalloc16_Release	[COMPOBJ.502]
 */
ULONG CDECL IMalloc16_fnRelease(IMalloc16* iface) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

	TRACE_(olemalloc)("(%p)->Release()\n",This);
	return 1; /* cannot be freed */
}

/******************************************************************************
 * IMalloc16_Alloc [COMPOBJ.503]
 */
SEGPTR CDECL IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

        LPVOID a = HeapAlloc( GetProcessHeap(), 0, cb );
        SEGPTR s = MapLS(a);
	TRACE_(olemalloc)("(%p)->Alloc(%d)=>%p(%04x:%04x)\n",This,cb,a,SELECTOROF(s),OFFSETOF(s));
        return s;
}

/******************************************************************************
 * IMalloc16_Free [COMPOBJ.505]
 */
VOID CDECL IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
{
    void *ptr = MapSL(pv);
    IMalloc16Impl *This = impl_from_IMalloc16(iface);
    TRACE_(olemalloc)("(%p)->Free(%p(%04x:%04x))\n",This,ptr,SELECTOROF(pv),OFFSETOF(pv));
//    UnMapLS(pv);
    /*
     * Corel Move 5.0 passes the allocated pointer plus 4 bytes.
     * https://support.microsoft.com/en-us/help/286470/how-to-use-pageheap-exe-in-windows-xp-windows-2000-and-windows-server
     * The Windows heap managers (all versions) have always guaranteed that the
     * heap allocations have a start address that is 8-byte aligned (on 64-bit
     * platforms the alignment is 16-bytes).
     */
    HeapFree( GetProcessHeap(), 0, (LPVOID)((SIZE_T)ptr & ~7) );
}

/******************************************************************************
 * IMalloc16_Realloc [COMPOBJ.504]
 */
SEGPTR CDECL IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
{
    SEGPTR ret;
    IMalloc16Impl *This = impl_from_IMalloc16(iface);

    TRACE_(olemalloc)("(%p)->Realloc(%08x,%d)\n",This,pv,cb);
    if (!pv)
	ret = IMalloc16_fnAlloc(iface, cb);
    else if (cb) {
        ret = MapLS( HeapReAlloc( GetProcessHeap(), 0, MapSL(pv), cb ) );
        UnMapLS(pv);
    } else {
	IMalloc16_fnFree(iface, pv);
	ret = 0;
    }
    return ret;
}

/******************************************************************************
 * IMalloc16_GetSize [COMPOBJ.506]
 */
DWORD CDECL IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv)
{
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

        TRACE_(olemalloc)("(%p)->GetSize(%08x)\n",This,pv);
        return HeapSize( GetProcessHeap(), 0, MapSL(pv) );
}

/******************************************************************************
 * IMalloc16_DidAlloc [COMPOBJ.507]
 */
INT16 CDECL IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

	TRACE_(olemalloc)("(%p)->DidAlloc(%p)\n",This,pv);
	return (INT16)-1;
}

/******************************************************************************
 * IMalloc16_HeapMinimize [COMPOBJ.508]
 */
LPVOID CDECL IMalloc16_fnHeapMinimize(IMalloc16* iface) {
        IMalloc16Impl *This = impl_from_IMalloc16(iface);

	TRACE_(olemalloc)("(%p)->HeapMinimize()\n",This);
	return NULL;
}

/******************************************************************************
 * IMalloc16_Constructor [VTABLE]
 */
static LPMALLOC16
IMalloc16_Constructor(void)
{
    static IMalloc16Vtbl vt16;
    static SEGPTR msegvt16;
    IMalloc16Impl* This;
    HMODULE16 hcomp = GetModuleHandle16("COMPOBJ");

    This = HeapAlloc( GetProcessHeap(), 0, sizeof(IMalloc16Impl) );
    if (!msegvt16)
    {
#define VTENT(x) vt16.x = (void*)GetProcAddress16(hcomp,"IMalloc16_"#x);assert(vt16.x)
        VTENT(QueryInterface);
        VTENT(AddRef);
        VTENT(Release);
        VTENT(Alloc);
        VTENT(Realloc);
        VTENT(Free);
        VTENT(GetSize);
        VTENT(DidAlloc);
        VTENT(HeapMinimize);
#undef VTENT
        msegvt16 = MapLS( &vt16 );
    }
    This->IMalloc16_iface.lpVtbl = (const IMalloc16Vtbl*)msegvt16;
    This->ref = 1;
    return (LPMALLOC16)MapLS( This );
}


/******************************************************************************
 *           CoBuildVersion [COMPOBJ.1]
 */
DWORD WINAPI CoBuildVersion16(void)
{
    return CoBuildVersion();
}

typedef struct
{
    SEGPTR malloc16;
} ole16_task_data;
static BOOL init_current_task_tls;
static DWORD current_task_tls;
static ole16_task_data *get_current_task_data()
{
    ole16_task_data *d;
    if (!init_current_task_tls)
    {
        current_task_tls = TlsAlloc();
        init_current_task_tls = TRUE;
    }
    d = (ole16_task_data*)TlsGetValue(current_task_tls);
    if (!d)
    {
        d = (ole16_task_data*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ole16_task_data));
        TlsSetValue(current_task_tls, d);
    }
    return d;
}
SEGPTR shared_malloc16;
HRESULT WINAPI get_task_imalloc16(SEGPTR *lpMalloc)
{
    ole16_task_data *d = get_current_task_data();
    if (!d->malloc16)
    {
        *lpMalloc = 0;
        ERR("CO_E_NOTINITIALIZED\n");
        return CO_E_NOTINITIALIZED;
    }
    *lpMalloc = d->malloc16;
    return S_OK;
}
/***********************************************************************
 *           CoGetMalloc    [COMPOBJ.4]
 *
 * Retrieve the current win16 IMalloc interface.
 *
 * RETURNS
 *	The current win16 IMalloc
 */
HRESULT WINAPI CoGetMalloc16(
    MEMCTX dwMemContext,	/* [in] memory context */
    SEGPTR * lpMalloc	/* [out] current win16 malloc interface */
) {
    ole16_task_data *d;
    if (dwMemContext == MEMCTX_SHARED)
    {
        if (!shared_malloc16)
        {
            shared_malloc16 = IMalloc16_Constructor();
        }
        *lpMalloc = shared_malloc16;
        return S_OK;
    }
    d = get_current_task_data();
    if (!d->malloc16)
    {
        *lpMalloc = 0;
        ERR("CO_E_NOTINITIALIZED\n");
        return CO_E_NOTINITIALIZED;
    }
    if (dwMemContext == MEMCTX_TASK)
    {
        *lpMalloc = d->malloc16;
        IMalloc16_AddRef(d->malloc16);
        return S_OK;
    }
    *lpMalloc = 0;
    return E_INVALIDARG16;
}

/***********************************************************************
 *           CoCreateStandardMalloc [COMPOBJ.71]
 */
HRESULT WINAPI CoCreateStandardMalloc16(MEMCTX dwMemContext,
					  SEGPTR *lpMalloc)
{
    /* FIXME: docu says we shouldn't return the same allocator as in
     * CoGetMalloc16 */
    *lpMalloc = IMalloc16_Constructor();
    return S_OK;
}

/******************************************************************************
 *		CoInitialize	[COMPOBJ.2]
 * Set the win16 IMalloc used for memory management
 */
HRESULT WINAPI CoInitialize16(
	SEGPTR lpReserved	/* [in] pointer to win16 malloc interface */
) {
    ole16_task_data *d = get_current_task_data();
    if (d->malloc16)
        return S_FALSE;
    if (!lpReserved)
    {
        lpReserved = IMalloc16_Constructor();
    }
    d->malloc16 = (LPMALLOC16)lpReserved;
    TRACE("IMalloc->QueryInterface: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, QueryInterface));
    TRACE("IMalloc->AddRef: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, AddRef));
    TRACE("IMalloc->Release: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, Release));
    TRACE("IMalloc->Alloc: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, Alloc));
    TRACE("IMalloc->Realloc: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, Realloc));
    TRACE("IMalloc->Free: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, Free));
    TRACE("IMalloc->GetSize: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, GetSize));
    TRACE("IMalloc->DidAlloc: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, DidAlloc));
    TRACE("IMalloc->HeapMinimize: %08x\n", GET_SEGPTR_METHOD_ADDR(IMalloc16, lpReserved, HeapMinimize));
    IMalloc16_AddRef(d->malloc16);
    return S_OK;
}

/***********************************************************************
 *           CoUninitialize   [COMPOBJ.3]
 * Don't know what it does.
 * 3-Nov-98 -- this was originally misspelled, I changed it to what I
 *   believe is the correct spelling
 */
void WINAPI CoUninitialize16(void)
{
  ole16_task_data *d = get_current_task_data();
  TRACE("()\n");
  if (d->malloc16)
  {
    IMalloc16_Release(d->malloc16);
  }
  CoFreeAllLibraries();
}

/***********************************************************************
 *           CoFreeUnusedLibraries [COMPOBJ.17]
 */
void WINAPI CoFreeUnusedLibraries16(void)
{
    CoFreeUnusedLibraries();
}

/***********************************************************************
 *           IsEqualGUID [COMPOBJ.18]
 *
 * Compares two Unique Identifiers.
 *
 * RETURNS
 *	TRUE if equal
 */
BOOL16 WINAPI IsEqualGUID16(
	GUID* g1,	/* [in] unique id 1 */
	GUID* g2)	/* [in] unique id 2 */
{
    return !memcmp( g1, g2, sizeof(GUID) );
}

HRESULT WINAPI guid_str_to_clsid(LPCOLESTR16 idstr, CLSID *id);
HRESULT WINAPI progid_to_clsid(LPCOLESTR16 idstr, CLSID *id);
HRESULT WINAPI IIDFromString16(LPSTR lpsz, LPIID lpiid)
{
    HRESULT r;
    if (!lpiid)
        return E_INVALIDARG16;
    if (!lpsz)
    {
        memset(lpiid, 0, sizeof(CLSID));
        return S_OK;
    }
    r = guid_str_to_clsid((LPCOLESTR16)lpsz, (CLSID*)lpiid);
    if (r == CO_E_CLASSSTRING)
        r = CO_E_IIDSTRING;
    return r;
}

/******************************************************************************
 *		CLSIDFromString	[COMPOBJ.20]
 * Converts a unique identifier from its string representation into
 * the GUID struct.
 *
 * Class id: DWORD-WORD-WORD-BYTES[2]-BYTES[6]
 *
 * RETURNS
 *	the converted GUID
 */
HRESULT WINAPI CLSIDFromString16(
	LPCOLESTR16 idstr,	/* [in] string representation of (guid or ProgId) */
	CLSID *id)		/* [out] GUID converted from string */
{
    HRESULT r = guid_str_to_clsid(idstr, id);
    if (SUCCEEDED(r))
        return r;
    return progid_to_clsid(idstr, id);
}
HRESULT WINAPI guid_str_to_clsid(LPCOLESTR16 idstr, CLSID *id)
{
  const BYTE *s;
  int	i;
  BYTE table[256];

  /* validate the CLSID string */
  if (strlen(idstr) != 38)
      goto invalid_guid;

  s = (const BYTE *) idstr;
  if ((s[0]!='{') || (s[9]!='-') || (s[14]!='-') || (s[19]!='-') || (s[24]!='-') || (s[37]!='}'))
      goto invalid_guid;

  for (i=1; i<37; i++) {
    if ((i == 9)||(i == 14)||(i == 19)||(i == 24)) continue;
    if (!(((s[i] >= '0') && (s[i] <= '9'))  ||
          ((s[i] >= 'a') && (s[i] <= 'f'))  ||
          ((s[i] >= 'A') && (s[i] <= 'F'))))
        goto invalid_guid;
  }

  TRACE("%s -> %p\n", s, id);

  /* quick lookup table */
  memset(table, 0, 256);

  for (i = 0; i < 10; i++) {
    table['0' + i] = i;
  }
  for (i = 0; i < 6; i++) {
    table['A' + i] = i+10;
    table['a' + i] = i+10;
  }

  /* in form {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} */

  id->Data1 = (table[s[1]] << 28 | table[s[2]] << 24 | table[s[3]] << 20 | table[s[4]] << 16 |
               table[s[5]] << 12 | table[s[6]] << 8  | table[s[7]] << 4  | table[s[8]]);
  id->Data2 = table[s[10]] << 12 | table[s[11]] << 8 | table[s[12]] << 4 | table[s[13]];
  id->Data3 = table[s[15]] << 12 | table[s[16]] << 8 | table[s[17]] << 4 | table[s[18]];

  /* these are just sequential bytes */
  id->Data4[0] = table[s[20]] << 4 | table[s[21]];
  id->Data4[1] = table[s[22]] << 4 | table[s[23]];
  id->Data4[2] = table[s[25]] << 4 | table[s[26]];
  id->Data4[3] = table[s[27]] << 4 | table[s[28]];
  id->Data4[4] = table[s[29]] << 4 | table[s[30]];
  id->Data4[5] = table[s[31]] << 4 | table[s[32]];
  id->Data4[6] = table[s[33]] << 4 | table[s[34]];
  id->Data4[7] = table[s[35]] << 4 | table[s[36]];

  return S_OK;
  invalid_guid:
  return CO_E_CLASSSTRING;
}
HRESULT WINAPI progid_to_clsid(LPCOLESTR16 idstr, CLSID *id)
{
  HKEY hkey = NULL;
  CHAR clsid[50];
  DWORD cbclsid = sizeof(clsid);
  LPOLESTR w;
  HRESULT r;
  if (RegOpenKey16(HKEY_CLASSES_ROOT, idstr, &hkey))
  {
      goto error;
  }
  if (RegQueryValue16(hkey, "CLSID", clsid, &cbclsid))
  {
      RegCloseKey16(hkey);
      goto error;
  }
  RegCloseKey16(hkey);
  return guid_str_to_clsid(clsid, id);
error:
  w = strdupAtoW(idstr);
  r = CLSIDFromString(w, id);
  HeapFree(GetProcessHeap(), 0, w);
  return hresult32_16(r);
}

/******************************************************************************
 *		_xmalloc16	[internal]
 * Allocates size bytes from the standard ole16 allocator.
 *
 * RETURNS
 *	the allocated segmented pointer and a HRESULT
 */
static HRESULT
_xmalloc16(DWORD size, SEGPTR *ptr) {
  LPMALLOC16 mllc;
  DWORD args[2];

  if (get_task_imalloc16(&mllc))
    return E_OUTOFMEMORY;

  args[0] = (DWORD)mllc;
  args[1] = size;
  /* No need for a Callback entry, we have WOWCallback16Ex which does
   * everything we need.
   */
  if (!WOWCallback16Ex(
      (DWORD)((const IMalloc16Vtbl*)MapSL(
	  (SEGPTR)((LPMALLOC16)MapSL((SEGPTR)mllc))->lpVtbl  )
      )->Alloc,
      WCB16_CDECL,
      2*sizeof(DWORD),
      (LPVOID)args,
      (LPDWORD)ptr
  )) {
      ERR("CallTo16 IMalloc16 (%d) failed\n",size);
      return E_FAIL;
  }
  return S_OK;
}

/******************************************************************************
 *		StringFromCLSID	[COMPOBJ.19]
 *              StringFromIID   [COMPOBJ.14]
 * Converts a GUID into the respective string representation.
 * The target string is allocated using the OLE IMalloc.
 *
 * RETURNS
 *	the string representation and HRESULT
 */

HRESULT WINAPI StringFromCLSID16(
  REFCLSID id,		/* [in] the GUID to be converted */
  LPOLESTR16 *idstr )	/* [out] a pointer to a to-be-allocated segmented pointer pointing to the resulting string */
{
    WCHAR buffer[40];
    HRESULT ret;

    ret = _xmalloc16(40,(SEGPTR*)idstr);
    if (ret != S_OK)
        return ret;
    StringFromGUID2( id, buffer, 40 );
    WideCharToMultiByte( CP_ACP, 0, buffer, -1, MapSL((SEGPTR)*idstr), 40, NULL, NULL );
    return ret;
}

/******************************************************************************
 * ProgIDFromCLSID [COMPOBJ.62]
 *
 * Converts a class id into the respective Program ID. (By using a registry lookup)
 *
 * RETURNS
 *  S_OK on success
 *  riid associated with the progid
 */
HRESULT WINAPI ProgIDFromCLSID16(
  REFCLSID clsid, /* [in] class id as found in registry */
  LPOLESTR16 *lplpszProgID )/* [out] associated Program ID */
{
    LPOLESTR progid;
    HRESULT ret;

    if (!lplpszProgID)
    {
        return E_INVALIDARG16;
    }
    ret = ProgIDFromCLSID( clsid, &progid );
    if (ret == S_OK)
    {
        INT len = WideCharToMultiByte( CP_ACP, 0, progid, -1, NULL, 0, NULL, NULL );
        ret = _xmalloc16(len, (SEGPTR*)lplpszProgID);
        if (ret == S_OK)
            WideCharToMultiByte( CP_ACP, 0, progid, -1, MapSL((SEGPTR)*lplpszProgID), len, NULL, NULL );
        CoTaskMemFree( progid );
    }
    else
    {
        *lplpszProgID = 0;
    }
    return ret;
}

/***********************************************************************
 *           LookupETask (COMPOBJ.94)
 */
HRESULT WINAPI LookupETask16(HTASK16 *hTask,LPVOID p) {
	FIXME("(%p,%p),stub!\n",hTask,p);
	if ((*hTask = GetCurrentTask()) == hETask) {
		memcpy(p, Table_ETask, sizeof(Table_ETask));
	}
	return 0;
}

/***********************************************************************
 *           SetETask (COMPOBJ.95)
 */
HRESULT WINAPI SetETask16(HTASK16 hTask, LPVOID p) {
        FIXME("(%04x,%p),stub!\n",hTask,p);
	hETask = hTask;
	return 0;
}

/***********************************************************************
 *           CALLOBJECTINWOW (COMPOBJ.201)
 */
HRESULT WINAPI CallObjectInWOW(LPVOID p1,LPVOID p2) {
	FIXME("(%p,%p),stub!\n",p1,p2);
	return 0;
}

/******************************************************************************
 *		CoRegisterClassObject	[COMPOBJ.5]
 *
 * Don't know where it registers it ...
 */
HRESULT WINAPI CoRegisterClassObject16(
	REFCLSID rclsid,
	/*LPUNKNOWN16*/SEGPTR pUnk,
	DWORD dwClsContext, /* [in] CLSCTX flags indicating the context in which to run the executable */
	DWORD flags,        /* [in] REGCLS flags indicating how connections are made */
	LPDWORD lpdwRegister
) {
    HRESULT result;
    TRACE("(%s,%p,0x%08x,0x%08x,%p)\n",
		debugstr_guid(rclsid),pUnk,dwClsContext,flags,lpdwRegister
	);
    result = hresult32_16(CoRegisterClassObject(rclsid, (IUnknown*)iface16_32(&IID_IUnknown, pUnk), dwClsContext, flags, lpdwRegister));
    TRACE("%08x\n", result);
    return result;
}

/******************************************************************************
 *      CoRevokeClassObject [COMPOBJ.6]
 *
 */
HRESULT WINAPI CoRevokeClassObject16(DWORD dwRegister) /* [in] token on class obj */
{
    TRACE("(0x%08x)\n", dwRegister);
    return hresult32_16(CoRevokeClassObject(dwRegister));
}

/******************************************************************************
 *              IsValidInterface        [COMPOBJ.23]
 *
 * Determines whether a pointer is a valid interface.
 *
 * PARAMS
 *  punk [I] Interface to be tested.
 *
 * RETURNS
 *  TRUE, if the passed pointer is a valid interface, or FALSE otherwise.
 */
BOOL WINAPI IsValidInterface16(SEGPTR punk)
{
	DWORD **ptr;

	if (IsBadReadPtr16(punk,4))
		return FALSE;
	ptr = MapSL(punk);
	if (IsBadReadPtr16((SEGPTR)ptr[0],4))	/* check vtable ptr */
		return FALSE;
	ptr = MapSL((SEGPTR)ptr[0]);		/* ptr to first method */
	if (IsBadReadPtr16((SEGPTR)ptr[0],2))
		return FALSE;
	return TRUE;
}

/******************************************************************************
 *      CoFileTimeToDosDateTime [COMPOBJ.30]
 */
BOOL16 WINAPI CoFileTimeToDosDateTime16(const FILETIME *ft, LPWORD lpDosDate, LPWORD lpDosTime)
{
    return FileTimeToDosDateTime(ft, lpDosDate, lpDosTime);
}

/******************************************************************************
 *      CoDosDateTimeToFileTime [COMPOBJ.31]
 */
BOOL16 WINAPI CoDosDateTimeToFileTime16(WORD wDosDate, WORD wDosTime, FILETIME *ft)
{
    return DosDateTimeToFileTime(wDosDate, wDosTime, ft);
}

/******************************************************************************
 *		CoGetCurrentProcess	[COMPOBJ.34]
 */
DWORD WINAPI CoGetCurrentProcess16(void)
{
    return CoGetCurrentProcess();
}

/******************************************************************************
 *		CoRegisterMessageFilter	[COMPOBJ.27]
 */
HRESULT WINAPI CoRegisterMessageFilter16(
	SEGPTR lpMessageFilter,
	SEGPTR *lplpMessageFilter
) {
    HRESULT result;
    LPMESSAGEFILTER lpmsgf = NULL;
	TRACE("(%p,%p)\n",lpMessageFilter,lplpMessageFilter);
    result = hresult32_16(CoRegisterMessageFilter((IMessageFilter*)iface16_32(&IID_IMessageFilter, lpMessageFilter), lplpMessageFilter ? &lpmsgf : NULL));
    if (lplpMessageFilter)
        *lplpMessageFilter = iface32_16(&IID_IMessageFilter, lpmsgf);
	return result;
}

/******************************************************************************
 *		CoLockObjectExternal	[COMPOBJ.63]
 */
HRESULT WINAPI CoLockObjectExternal16(
    /*LPUNKNOWN*/SEGPTR pUnk,		/* [in] object to be locked */
    BOOL16 fLock,		/* [in] do lock */
    BOOL16 fLastUnlockReleases	/* [in] ? */
) {
    TRACE("(%p,%d,%d)\n",pUnk,fLock,fLastUnlockReleases);
    return CoLockObjectExternal((IUnknown*)iface16_32(&IID_IUnknown, pUnk), fLock, fLastUnlockReleases);
}

/***********************************************************************
 *           CoGetState [COMPOBJ.115]
 */
HRESULT WINAPI CoGetState16(LPDWORD state)
{
    FIXME("(%p),stub!\n", state);

    *state = 0;
    return S_OK;
}

/***********************************************************************
 *      DllEntryPoint                   [COMPOBJ.116]
 *
 *    Initialization code for the COMPOBJ DLL
 *
 * RETURNS:
 */
BOOL WINAPI COMPOBJ_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ds, WORD HeapSize, DWORD res1, WORD res2)
{
        TRACE("(%08x, %04x, %04x, %04x, %08x, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2);
        return TRUE;
}

/***********************************************************************
 *           CoMemAlloc [COMPOBJ.151]
 */
SEGPTR WINAPI CoMemAlloc(DWORD size, MEMCTX dwMemContext, DWORD x) {
	HRESULT		hres;
	SEGPTR		segptr;

	/* FIXME: check context handling */
	TRACE("(%d, 0x%08x, 0x%08x)\n", size, dwMemContext, x);
	hres = _xmalloc16(size, &segptr);
	if (hres != S_OK)
		return 0;
	return segptr;
}

/******************************************************************************
 *		CLSIDFromProgID [COMPOBJ.61]
 *
 * Converts a program ID into the respective GUID.
 *
 * PARAMS
 *  progid       [I] program id as found in registry
 *  riid         [O] associated CLSID
 *
 * RETURNS
 *	Success: S_OK
 *  Failure: CO_E_CLASSSTRING - the given ProgID cannot be found.
 */
HRESULT WINAPI CLSIDFromProgID16(LPCOLESTR16 progid, LPCLSID riid)
{
	char	*buf,buf2[80];
	LONG	buf2len;
	HKEY	xhkey;

	buf = HeapAlloc(GetProcessHeap(),0,strlen(progid)+8);
	sprintf(buf,"%s\\CLSID",progid);
	if (RegOpenKey16(HKEY_CLASSES_ROOT,buf,&xhkey)) {
		HeapFree(GetProcessHeap(),0,buf);
                return CO_E_CLASSSTRING;
	}
	HeapFree(GetProcessHeap(),0,buf);
	buf2len = sizeof(buf2);
	if (RegQueryValue16(xhkey,NULL,buf2,&buf2len)) {
		RegCloseKey(xhkey);
                return CO_E_CLASSSTRING;
	}
	RegCloseKey(xhkey);
	return CLSIDFromString16(buf2,riid);
}

/******************************************************************************
 *		StringFromGUID2	[COMPOBJ.76]
 */
INT16 WINAPI StringFromGUID216(REFGUID id, LPOLESTR16 str, INT16 cmax)
{
    static const char format[] = "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}";
    if (!id || cmax < CHARS_IN_GUID) return 0;
    sprintf( str, format, id->Data1, id->Data2, id->Data3,
             id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
             id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
    return CHARS_IN_GUID;
}


/***********************************************************************
 *           CoFileTimeNow [COMPOBJ.82]
 */
HRESULT WINAPI CoFileTimeNow16( FILETIME *lpFileTime )
{
    return CoFileTimeNow( lpFileTime );
}

/***********************************************************************
 *           CoGetClassObject [COMPOBJ.7]
 *
 */
HRESULT WINAPI CoGetClassObject16(
    SEGPTR rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo,
    SEGPTR riid, SEGPTR ppv)
{
    LPVOID *ppvl = MapSL(ppv);
    char idstr[CHARS_IN_GUID];
    char buf_key[CHARS_IN_GUID+190], dllpath[MAX_PATH+1];
    LONG dllpath_len = sizeof(dllpath);
    HRESULT err_last = E_NOTIMPL16;

    TRACE("CLSID: %s, IID: %s\n", debugstr_guid(MapSL(rclsid)), debugstr_guid(MapSL(riid)));

    *ppvl = NULL;
    StringFromGUID216(MapSL(rclsid), idstr, CHARS_IN_GUID);

    if (pServerInfo) {
        FIXME("pServerInfo->name=%s pAuthInfo=%p\n",
              debugstr_w(pServerInfo->pwszName), pServerInfo->pAuthInfo);
    }

    if (CLSCTX_INPROC_SERVER & dwClsContext)
    {

        HMODULE16 dll;
        FARPROC16 DllGetClassObject;

        WORD args[6];
        DWORD dwRet;

        sprintf(buf_key, "CLSID\\%s\\InprocServer", idstr);
        if (RegQueryValue16(HKEY_CLASSES_ROOT, buf_key, dllpath, &dllpath_len))
        {
            /* 64-bit COM...? */
            sprintf(buf_key, "CLSID\\%s\\InprocServer32", idstr);
            dllpath_len = sizeof(dllpath);
            if (!RegQueryValue16(HKEY_CLASSES_ROOT, buf_key, dllpath, &dllpath_len))
            {
                PVOID pv = NULL;
                HRESULT result;
                result = CoGetClassObject((REFCLSID)MapSL(rclsid), CLSCTX_INPROC_SERVER, pServerInfo, (REFIID)MapSL(riid), &pv);
                *(SEGPTR*)MapSL(ppv) = iface32_16((REFIID)MapSL(riid), pv);
                return hresult32_16(result);
            }
            ERR("class %s not registered\n", debugstr_guid(MapSL(rclsid)));
            err_last = REGDB_E_CLASSNOTREG;
            goto fail_inproc;
        }

        dll = LoadLibrary16(dllpath);
        if (dll < 32)
        {
            ERR("couldn't load in-process dll %s\n", debugstr_a(dllpath));
            err_last = E_ACCESSDENIED16; /* FIXME: or should this be CO_E_DLLNOTFOUND? */
            goto fail_inproc;
        }

        DllGetClassObject = GetProcAddress16(dll, "DllGetClassObject");
        if (!DllGetClassObject)
        {
            ERR("couldn't find function DllGetClassObject in %s\n", debugstr_a(dllpath));
            FreeLibrary16(dll);
            err_last = CO_E_DLLNOTFOUND;
            goto fail_inproc;
        }

        TRACE("calling DllGetClassObject %p\n", DllGetClassObject);
        args[5] = SELECTOROF(rclsid);
        args[4] = OFFSETOF(rclsid);
        args[3] = SELECTOROF(riid);
        args[2] = OFFSETOF(riid);
        args[1] = SELECTOROF(ppv);
        args[0] = OFFSETOF(ppv);
        WOWCallback16Ex((DWORD) DllGetClassObject, WCB16_PASCAL, sizeof(args), args, &dwRet);
        if (dwRet != S_OK)
        {
            ERR("DllGetClassObject returned error 0x%08x\n", dwRet);
            FreeLibrary16(dll);
            return dwRet;
        }

        return S_OK;
    }

    fail_inproc:
    if (CLSCTX_LOCAL_SERVER & dwClsContext)
    {
        HRESULT result;
        PVOID pv = NULL;
        result = CoGetClassObject((REFCLSID)MapSL(rclsid), dwClsContext, pServerInfo, (REFIID)MapSL(riid), &pv);
        *(SEGPTR*)MapSL(ppv) = iface32_16((REFCLSID)MapSL(riid), pv);
        return hresult32_16(result);
    }
    fail_svr:
    FIXME("semi-stub\n");
    return err_last;
}

/******************************************************************************
 *		CoCreateGuid [COMPOBJ.73]
 */
HRESULT WINAPI CoCreateGuid16(GUID *pguid)
{
    return CoCreateGuid( pguid );
}

/***********************************************************************
 *           CoCreateInstance [COMPOBJ.13]
 */
HRESULT WINAPI CoCreateInstance16(
	/* REFCLSID */SEGPTR srclsid,
	SEGPTR pUnkOuter,
	DWORD dwClsContext,
	/* REFIID */SEGPTR siid,
	/* SEGPTR* */SEGPTR sppv)
{
  LPVOID pv;
  HRESULT result;
  REFCLSID rclsid = (REFCLSID)MapSL(srclsid);
  REFIID iid = (REFIID)MapSL(siid);
  SEGPTR *ppv = (SEGPTR*)MapSL(sppv);
  TRACE("(%s, %p, %x, %s, %p)\n",
	debugstr_guid(rclsid), pUnkOuter, dwClsContext, debugstr_guid(iid),
	ppv
  );
  result = CoCreateInstance(rclsid, (IUnknown*)iface16_32(&IID_IUnknown, pUnkOuter), dwClsContext, iid, &pv);
  if (result == REGDB_E_CLASSNOTREG)
  {
      SEGPTR cf;
      result = CoGetClassObject16(srclsid, dwClsContext, NULL, MapLS(&IID_IClassFactory), MapLS(&cf));
      if (SUCCEEDED(result))
      {
          result = IClassFactory16_CreateInstance(cf, pUnkOuter, siid, sppv);
          IClassFactory16_Release(cf);
          return result;
      }
      return hresult32_16(result);
  }
  *ppv = iface32_16(iid, pv);
  return hresult32_16(result);
}

/***********************************************************************
 *           CoDisconnectObject [COMPOBJ.15]
 */
HRESULT WINAPI CoDisconnectObject16( /*LPUNKNOWN*/SEGPTR lpUnk, DWORD reserved )
{
  TRACE("(%p, 0x%08x)\n", lpUnk, reserved);
  return hresult32_16(CoDisconnectObject((IUnknown*)iface16_32(&IID_IUnknown, lpUnk), reserved));
}

HRESULT WINAPI CoIsOle1Class16(REFCLSID rclsid)
{
    TRACE("(%p)\n", rclsid);
    return hresult32_16(CoIsOle1Class(rclsid));
}

HRESULT WINAPI FnAssert16(LPCSTR expr, LPCSTR msg, LPCSTR file, WORD line)
{
    TRACE("(%s,%s,%s,%d)\n", debugstr_a(expr), debugstr_a(msg), debugstr_a(msg), line);
    return S_OK;
}

HRESULT WINAPI CoGetTreatAsClass16(REFCLSID clsidOld, LPCLSID pClsidNew)
{
    HRESULT r;
    TRACE("(%s,%p)\n", debugstr_guid(clsidOld), pClsidNew);
    r = CoGetTreatAsClass(clsidOld, pClsidNew);
    return hresult32_16(r);
}

HRESULT WINAPI CoTreatAsClass16(REFCLSID clsidOld, REFCLSID clsidNew)
{
    HRESULT r;
    TRACE("(%s,%p)\n", debugstr_guid(clsidOld), debugstr_guid(clsidNew));
    r = CoTreatAsClass(clsidOld, clsidNew);
    if (r == REGDB_E_WRITEREGDB)
    {
        ERR("REGDB_E_WRITEREGDB\n");
    }
    return hresult32_16(r);
}


================================================
FILE: compobj/compobj.def
================================================
; File generated automatically from ..\compobj\compobj.dll16.spec; do not edit!

LIBRARY compobj.dll16

EXPORTS
  _wine_spec_dos_header @1 DATA
  get_task_imalloc16 @2
  CoInitialize16 @3
  CoUninitialize16 @4
  StringFromGUID216 @5
  CoCreateInstance16


================================================
FILE: compobj/compobj.dll16.spec
================================================
1 pascal CoBuildVersion() CoBuildVersion16
2 pascal CoInitialize(long) CoInitialize16
3 pascal CoUninitialize() CoUninitialize16
4 pascal CoGetMalloc(long ptr) CoGetMalloc16
5 pascal CoRegisterClassObject(ptr segptr long long ptr) CoRegisterClassObject16
6 pascal CoRevokeClassObject(long) CoRevokeClassObject16
7 pascal CoGetClassObject(segptr long ptr segptr segptr) CoGetClassObject16
8 stub COMARSHALINTERFACE
9 stub COUNMARSHALINTERFACE
10 stub COLOADLIBRARY
11 stub COFREELIBRARY
12 stub COFREEALLLIBRARIES
13 pascal CoCreateInstance(segptr segptr long segptr segptr) CoCreateInstance16
14 pascal StringFromIID(ptr ptr) StringFromCLSID16
15 pascal CoDisconnectObject(segptr long) CoDisconnectObject16
16 stub CORELEASEMARSHALDATA
17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries16
18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID
Download .txt
gitextract__5xouun8/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       └── bug_report.md
├── .gitignore
├── BuildToolProperty.props
├── CMakeLists.txt
├── LICENSE
├── PropertySheet.props
├── README.md
├── READMEJP.md
├── appveyor.yml
├── avifile/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── avifile.def
│   ├── avifile.dll16.spec
│   ├── avifile.vcxproj
│   └── main.c
├── comm/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── comm.def
│   ├── comm.drv16.spec
│   └── comm.vcxproj
├── commctrl/
│   ├── CMakeLists.txt
│   ├── commctrl.c
│   ├── commctrl.def
│   ├── commctrl.dll16.spec
│   └── commctrl.vcxproj
├── commdlg/
│   ├── CMakeLists.txt
│   ├── cdlg16.h
│   ├── colordlg.c
│   ├── commdlg.def
│   ├── commdlg.dll16.spec
│   ├── commdlg.rc
│   ├── commdlg.vcxproj
│   ├── commdlg.vcxproj.filters
│   ├── filedlg.c
│   ├── finddlg.c
│   ├── fontdlg.c
│   ├── printdlg.c
│   └── resource.h
├── compobj/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── compobj.c
│   ├── compobj.def
│   ├── compobj.dll16.spec
│   └── compobj.vcxproj
├── convertwinefile/
│   ├── convertwinefile.vcxproj
│   ├── convertwinefile.vcxproj.filters
│   └── main.c
├── convspec/
│   ├── CMakeLists.txt
│   ├── build.h
│   ├── convspec.c
│   ├── convspec.vcxproj
│   ├── convspec.vcxproj.filters
│   ├── import.c
│   ├── main.c.h
│   ├── parser.c
│   ├── relay.c
│   ├── res16.c
│   ├── res32.c
│   ├── spec16.c
│   ├── spec32.c
│   ├── utils.c
│   └── ver.h
├── ctl3d/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ctl3d.c
│   ├── ctl3d.def
│   ├── ctl3d.dll16.spec
│   └── ctl3d.vcxproj
├── ctl3dv2/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ctl3d.c
│   ├── ctl3dv2.def
│   ├── ctl3dv2.dll16.spec
│   └── ctl3dv2.vcxproj
├── ddeml/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ddeml.c
│   ├── ddeml.def
│   ├── ddeml.dll16.spec
│   └── ddeml.vcxproj
├── dispdib/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── dispdib.c
│   ├── dispdib.def
│   ├── dispdib.dll16.spec
│   └── dispdib.vcxproj
├── display/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── display.c
│   ├── display.def
│   ├── display.drv16.spec
│   ├── display.rc
│   └── display.vcxproj
├── dummy.c
├── dummydll/
│   └── vgaoem.fon
├── gdi/
│   ├── CMakeLists.txt
│   ├── bidi.c
│   ├── env.c
│   ├── gdi.c
│   ├── gdi.def
│   ├── gdi.exe16.spec
│   ├── gdi.vcxproj
│   ├── gdi.vcxproj.filters
│   ├── metafile.c
│   └── printdrv.c
├── gvm/
│   ├── CMakeLists.txt
│   ├── gvm-interface.h
│   ├── gvm.c
│   ├── gvm.def
│   ├── gvm.h
│   ├── gvm.vcxproj
│   └── gvm.vcxproj.filters
├── haxmvm/
│   ├── CMakeLists.txt
│   ├── haxmvm.c
│   ├── haxmvm.h
│   ├── haxmvm.vcxproj
│   └── haxmvm.vcxproj.filters
├── install (no console).lnk
├── install.inf
├── install.lnk
├── installw.inf
├── keyboard/
│   ├── CMakeLists.txt
│   ├── keyboard.c
│   ├── keyboard.def
│   ├── keyboard.drv16.spec
│   ├── keyboard.vcxproj
│   └── keyboard.vcxproj.filters
├── krnl386/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── atom.c
│   ├── compat.c
│   ├── conf.c
│   ├── dma.c
│   ├── dosaspi.c
│   ├── dosdev.c
│   ├── dosexe.c
│   ├── dosexe.h
│   ├── dosmem.c
│   ├── dosvm.c
│   ├── error.c
│   ├── file.c
│   ├── fpu.c
│   ├── global.c
│   ├── instr.c
│   ├── int09.c
│   ├── int10.c
│   ├── int13.c
│   ├── int15.c
│   ├── int16.c
│   ├── int21.c
│   ├── int25.c
│   ├── int26.c
│   ├── int2f.c
│   ├── int31.c
│   ├── int33.c
│   ├── int67.c
│   ├── interrupts.c
│   ├── ioports.c
│   ├── kernel.c
│   ├── kernel16_private.h
│   ├── krnl386.def
│   ├── krnl386.exe16.spec
│   ├── krnl386.vcxproj
│   ├── krnl386.vcxproj.filters
│   ├── local.c
│   ├── ne_module.c
│   ├── ne_segment.c
│   ├── registry.c
│   ├── relay.c
│   ├── resource.c
│   ├── selector.c
│   ├── snoop.c
│   ├── soundblaster.c
│   ├── stub.c
│   ├── syslevel.c
│   ├── task.c
│   ├── thunk.c
│   ├── timer.c
│   ├── utthunk.c
│   ├── vdd.c
│   ├── version.rc
│   ├── vga.c
│   ├── vga.h
│   ├── vxd.c
│   ├── wow_handle.c
│   └── wowthunk.c
├── lzexpand/
│   ├── CMakeLists.txt
│   ├── lzexpand.c
│   ├── lzexpand.def
│   ├── lzexpand.dll16.spec
│   ├── lzexpand.vcxproj
│   ├── lzexpand.vcxproj.filters
│   └── wine_lzexpand.c
├── mmsystem/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── driver.c
│   ├── mci16.c
│   ├── message16.c
│   ├── mmio16.c
│   ├── mmsystem.c
│   ├── mmsystem.def
│   ├── mmsystem.dll16.spec
│   ├── mmsystem.vcxproj
│   ├── playsound.c
│   └── winemm16.h
├── mouse/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── mouse.c
│   ├── mouse.def
│   ├── mouse.drv16.spec
│   ├── mouse.rc
│   └── mouse.vcxproj
├── msacm/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── msacm.c
│   ├── msacm.def
│   ├── msacm.dll16.spec
│   ├── msacm.vcxproj
│   └── wineacm16.h
├── msvideo/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── msvideo.def
│   ├── msvideo.dll16.spec
│   ├── msvideo.vcxproj
│   ├── msvideo16.c
│   └── vfw16.h
├── nddeapi/
│   ├── CMakeLists.txt
│   ├── nddeapi.c
│   ├── nddeapi.def
│   ├── nddeapi.dll16.spec
│   └── nddeapi.vcxproj
├── netapi/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── netapi.c
│   ├── netapi.def
│   ├── netapi.dll16.spec
│   └── netapi.vcxproj
├── ntvdm/
│   ├── CMakeLists.txt
│   ├── main.c
│   ├── ntvdm.def
│   ├── ntvdm.dll.spec
│   └── ntvdm.vcxproj
├── ole2/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── hglobalstream.c
│   ├── ifs.h
│   ├── ifs.idl
│   ├── ifs_thunk.c
│   ├── ifs_thunk.h
│   ├── memlockbytes.c
│   ├── ole2.c
│   ├── ole2.def
│   ├── ole2.dll16.spec
│   └── ole2.vcxproj
├── ole2conv/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2conv.def
│   ├── ole2conv.dll16.spec
│   └── ole2conv.vcxproj
├── ole2disp/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2disp.c
│   ├── ole2disp.def
│   ├── ole2disp.dll16.spec
│   ├── ole2disp.h
│   ├── ole2disp.vcxproj
│   ├── var/
│   │   ├── resource.h
│   │   ├── varformat.c
│   │   ├── variant.c
│   │   ├── variant.h
│   │   └── vartype.c
│   ├── wine_typelib.c
│   └── wine_typelib.h
├── ole2nls/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2nls.c
│   ├── ole2nls.def
│   ├── ole2nls.dll16.spec
│   ├── ole2nls.vcxproj
│   └── version.rc
├── ole2prox/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2prox.def
│   ├── ole2prox.dll16.spec
│   └── ole2prox.vcxproj
├── ole2thk/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ole2thk.def
│   ├── ole2thk.dll16.spec
│   └── ole2thk.vcxproj
├── olecli/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── olecli.c
│   ├── olecli.def
│   ├── olecli.dll16.spec
│   ├── olecli.h
│   └── olecli.vcxproj
├── olesvr/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── olesvr.c
│   ├── olesvr.def
│   ├── olesvr.dll16.spec
│   ├── olesvr.vcxproj
│   └── olesvr.vcxproj.filters
├── otvdm/
│   ├── CMakeLists.txt
│   ├── otvdm.rc
│   ├── otvdm.vcxproj
│   ├── otvdm.vcxproj.filters
│   ├── otvdmw.vcxproj
│   ├── otvdmw.vcxproj.filters
│   ├── resource.h
│   ├── visualstyle.manifest
│   └── winevdm.c
├── otvdm.ini
├── otvdm.sln
├── regedit/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── regedit.c
│   ├── regedit.def
│   ├── regedit.exe16.spec
│   └── regedit.vcxproj
├── rmpatch/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── instr.c
│   ├── rmpatch.c
│   ├── rmpatch.def
│   ├── rmpatch.dll16.spec
│   └── rmpatch.vcxproj
├── shell/
│   ├── CMakeLists.txt
│   ├── shell.c
│   ├── shell.def
│   ├── shell.dll16.spec
│   ├── shell.vcxproj
│   └── shell.vcxproj.filters
├── sound/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── sound.c
│   ├── sound.def
│   ├── sound.drv16.spec
│   └── sound.vcxproj
├── storage/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ifs.h
│   ├── storage.c
│   ├── storage.def
│   ├── storage.dll16.spec
│   └── storage.vcxproj
├── system/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── system.c
│   ├── system.def
│   ├── system.drv16.spec
│   └── system.vcxproj
├── timer/
│   ├── CMakeLists.txt
│   ├── timer.c
│   ├── timer.def
│   ├── timer.drv16.spec
│   └── timer.vcxproj
├── toolhelp/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── toolhelp.c
│   ├── toolhelp.def
│   ├── toolhelp.dll16.spec
│   ├── toolhelp.h
│   └── toolhelp.vcxproj
├── tools/
│   └── package.ps1
├── typelib/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── typelib.c
│   ├── typelib.def
│   ├── typelib.dll16.spec
│   └── typelib.vcxproj
├── uninstall.reg
├── user/
│   ├── CMakeLists.txt
│   ├── bidi.c
│   ├── comm.c
│   ├── dde.c
│   ├── dialog.c
│   ├── hook.c
│   ├── message.c
│   ├── message_table.h
│   ├── network.c
│   ├── stub.c
│   ├── user.c
│   ├── user.def
│   ├── user.exe16.spec
│   ├── user.rc
│   ├── user.vcxproj
│   ├── user.vcxproj.filters
│   ├── user_private.h
│   ├── window.c
│   └── winhelp.c
├── ver/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── ver.def
│   ├── ver.dll16.spec
│   ├── ver.vcxproj
│   └── version.c
├── vm86/
│   ├── CMakeLists.txt
│   ├── COPYING.txt
│   ├── mame/
│   │   ├── emu/
│   │   │   └── cpu/
│   │   │       ├── i386/
│   │   │       │   ├── cycles.h
│   │   │       │   ├── i386.c
│   │   │       │   ├── i386.h
│   │   │       │   ├── i386dasm.c
│   │   │       │   ├── i386op16.c
│   │   │       │   ├── i386op32.c
│   │   │       │   ├── i386ops.c
│   │   │       │   ├── i386ops.h
│   │   │       │   ├── i386priv.h
│   │   │       │   ├── i486ops.c
│   │   │       │   ├── pentops.c
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   └── x87ops.c
│   │   │       ├── i386.old/
│   │   │       │   ├── cycles.h
│   │   │       │   ├── i386.c
│   │   │       │   ├── i386.h
│   │   │       │   ├── i386dasm.c
│   │   │       │   ├── i386op16.c
│   │   │       │   ├── i386op32.c
│   │   │       │   ├── i386ops.c
│   │   │       │   ├── i386ops.h
│   │   │       │   ├── i386priv.h
│   │   │       │   ├── i486ops.c
│   │   │       │   ├── pentops.c
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   └── x87ops.c
│   │   │       ├── i86/
│   │   │       │   ├── ea.h
│   │   │       │   ├── host.h
│   │   │       │   ├── i286.c
│   │   │       │   ├── i286.h
│   │   │       │   ├── i86.c
│   │   │       │   ├── i86.h
│   │   │       │   ├── i86.txt
│   │   │       │   ├── i86priv.h
│   │   │       │   ├── i86time.c
│   │   │       │   ├── instr186.c
│   │   │       │   ├── instr186.h
│   │   │       │   ├── instr286.c
│   │   │       │   ├── instr286.h
│   │   │       │   ├── instr86.c
│   │   │       │   ├── instr86.h
│   │   │       │   ├── modrm.h
│   │   │       │   ├── modrm286.h
│   │   │       │   ├── readme_msdos_player.txt
│   │   │       │   ├── table186.h
│   │   │       │   ├── table286.h
│   │   │       │   └── table86.h
│   │   │       ├── readme_msdos_player.txt
│   │   │       ├── vtlb.c
│   │   │       └── vtlb.h
│   │   └── lib/
│   │       └── softfloat/
│   │           ├── README.txt
│   │           ├── f2xm1.c
│   │           ├── fpatan.c
│   │           ├── fpu_constant.h
│   │           ├── fsincos.c
│   │           ├── fyl2x.c
│   │           ├── mamesf.h
│   │           ├── milieu.h
│   │           ├── readme_msdos_player.txt
│   │           ├── softfloat-macros
│   │           ├── softfloat-specialize
│   │           ├── softfloat.c
│   │           └── softfloat.h
│   ├── msdos.cpp
│   ├── msdos.h
│   ├── vm86.def
│   ├── vm86.vcxproj
│   └── vm86.vcxproj.filters
├── whpxvm/
│   ├── CMakeLists.txt
│   ├── whpxvm.c
│   ├── whpxvm.def
│   ├── whpxvm.h
│   └── whpxvm.vcxproj
├── widl/
│   ├── CMakeLists.txt
│   ├── client.c
│   ├── expr.c
│   ├── expr.h
│   ├── getopt.c
│   ├── getopt_msvc.h
│   ├── hash.c
│   ├── hash.h
│   ├── header.c
│   ├── header.h
│   ├── parser.h
│   ├── parser.l
│   ├── parser.y
│   ├── proxy.c
│   ├── register.c
│   ├── relay16.c
│   ├── server.c
│   ├── typegen.c
│   ├── typegen.h
│   ├── typelib.c
│   ├── typelib.h
│   ├── typelib_struct.h
│   ├── typetree.c
│   ├── typetree.h
│   ├── utils.c
│   ├── utils.h
│   ├── widl.c
│   ├── widl.h
│   ├── widl.vcxproj
│   ├── widltypes.h
│   └── write_msft.c
├── wifeman/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── wifeman.c
│   ├── wifeman.def
│   ├── wifeman.dll16.spec
│   └── wifeman.vcxproj
├── win87em/
│   ├── CMakeLists.txt
│   ├── win87em.c
│   ├── win87em.def
│   ├── win87em.dll16.spec
│   ├── win87em.vcxproj
│   └── win87em.vcxproj.filters
├── wine/
│   ├── CMakeLists.txt
│   ├── casemap.c
│   ├── config.c
│   ├── config.h
│   ├── debug.c
│   ├── ldt.c
│   ├── ldt2.c
│   ├── port.h
│   ├── string.c
│   ├── wctype.c
│   ├── windows/
│   │   ├── Makefile.in
│   │   ├── accctrl.h
│   │   ├── access.idl
│   │   ├── aclapi.h
│   │   ├── aclui.h
│   │   ├── activation.idl
│   │   ├── activaut.idl
│   │   ├── activdbg.idl
│   │   ├── activscp.idl
│   │   ├── adshlp.h
│   │   ├── advpub.h
│   │   ├── af_irda.h
│   │   ├── amaudio.h
│   │   ├── amstream.idl
│   │   ├── amvideo.idl
│   │   ├── appcompatapi.h
│   │   ├── appmgmt.h
│   │   ├── appmodel.h
│   │   ├── asptlb.idl
│   │   ├── asynot.idl
│   │   ├── asysta.idl
│   │   ├── atlbase.h
│   │   ├── atlcom.h
│   │   ├── atliface.idl
│   │   ├── atlwin.h
│   │   ├── audevcod.h
│   │   ├── audioclient.idl
│   │   ├── audiopolicy.idl
│   │   ├── audiosessiontypes.h
│   │   ├── austream.idl
│   │   ├── authz.h
│   │   ├── aviriff.h
│   │   ├── avrt.h
│   │   ├── axcore.idl
│   │   ├── axextend.idl
│   │   ├── basetsd.h
│   │   ├── basetyps.h
│   │   ├── bcrypt.h
│   │   ├── bdaiface.idl
│   │   ├── bdaiface_enums.h
│   │   ├── bdatypes.h
│   │   ├── binres.idl
│   │   ├── bits.idl
│   │   ├── bits1_5.idl
│   │   ├── bits2_0.idl
│   │   ├── bits2_5.idl
│   │   ├── bits3_0.idl
│   │   ├── bitsmsg.h
│   │   ├── bluetoothapis.h
│   │   ├── bthsdpdef.h
│   │   ├── cderr.h
│   │   ├── cfgmgr32.h
│   │   ├── cguid.h
│   │   ├── chprst.idl
│   │   ├── cierror.h
│   │   ├── clusapi.h
│   │   ├── cmdbas.idl
│   │   ├── cmdtxt.idl
│   │   ├── cmnquery.idl
│   │   ├── colinf.idl
│   │   ├── comcat.idl
│   │   ├── commctrl.h
│   │   ├── commctrl.rh
│   │   ├── commdlg.h
│   │   ├── commoncontrols.idl
│   │   ├── compobj.h
│   │   ├── comsvcs.idl
│   │   ├── config.h
│   │   ├── config.h.in
│   │   ├── control.idl
│   │   ├── cor.idl
│   │   ├── cordebug.idl
│   │   ├── corerror.h
│   │   ├── corhdr.h
│   │   ├── cpl.h
│   │   ├── crtrow.idl
│   │   ├── cryptdlg.h
│   │   ├── cryptuiapi.h
│   │   ├── ctfutb.idl
│   │   ├── ctxtcall.idl
│   │   ├── custcntl.h
│   │   ├── cvconst.h
│   │   ├── d2d1.idl
│   │   ├── d2d1_1.idl
│   │   ├── d2dbasetypes.h
│   │   ├── d2derr.h
│   │   ├── d3d.h
│   │   ├── d3d10.idl
│   │   ├── d3d10_1.idl
│   │   ├── d3d10_1shader.h
│   │   ├── d3d10effect.h
│   │   ├── d3d10misc.h
│   │   ├── d3d10sdklayers.idl
│   │   ├── d3d10shader.h
│   │   ├── d3d11.idl
│   │   ├── d3d11_1.idl
│   │   ├── d3d11_2.idl
│   │   ├── d3d11_3.idl
│   │   ├── d3d11_4.idl
│   │   ├── d3d11on12.idl
│   │   ├── d3d11sdklayers.idl
│   │   ├── d3d11shader.h
│   │   ├── d3d12.idl
│   │   ├── d3d8.h
│   │   ├── d3d8caps.h
│   │   ├── d3d8types.h
│   │   ├── d3d9.h
│   │   ├── d3d9caps.h
│   │   ├── d3d9types.h
│   │   ├── d3dcaps.h
│   │   ├── d3dcommon.idl
│   │   ├── d3dcompiler.h
│   │   ├── d3dhal.h
│   │   ├── d3drm.h
│   │   ├── d3drmdef.h
│   │   ├── d3drmobj.h
│   │   ├── d3drmwin.h
│   │   ├── d3dtypes.h
│   │   ├── d3dukmdt.h
│   │   ├── d3dvec.inl
│   │   ├── d3dx10.h
│   │   ├── d3dx10async.h
│   │   ├── d3dx10core.idl
│   │   ├── d3dx10math.h
│   │   ├── d3dx10tex.h
│   │   ├── d3dx11.h
│   │   ├── d3dx11async.h
│   │   ├── d3dx11core.idl
│   │   ├── d3dx11tex.h
│   │   ├── d3dx9.h
│   │   ├── d3dx9anim.h
│   │   ├── d3dx9core.h
│   │   ├── d3dx9effect.h
│   │   ├── d3dx9math.h
│   │   ├── d3dx9math.inl
│   │   ├── d3dx9mesh.h
│   │   ├── d3dx9shader.h
│   │   ├── d3dx9shape.h
│   │   ├── d3dx9tex.h
│   │   ├── d3dx9xof.h
│   │   ├── davclnt.h
│   │   ├── dbccmd.idl
│   │   ├── dbcses.idl
│   │   ├── dbdsad.idl
│   │   ├── dbghelp.h
│   │   ├── dbinit.idl
│   │   ├── dbprop.idl
│   │   ├── dbs.idl
│   │   ├── dbt.h
│   │   ├── dciddi.h
│   │   ├── dciman.h
│   │   ├── dcommon.idl
│   │   ├── dde.h
│   │   ├── dde.rh
│   │   ├── ddeml.h
│   │   ├── ddraw.h
│   │   ├── ddrawgdi.h
│   │   ├── ddrawi.h
│   │   ├── ddstream.idl
│   │   ├── delayloadhandler.h
│   │   ├── devenum.idl
│   │   ├── devguid.h
│   │   ├── devicetopology.idl
│   │   ├── devpkey.h
│   │   ├── devpropdef.h
│   │   ├── dhcpcsdk.h
│   │   ├── dhtmldid.h
│   │   ├── dhtmled.idl
│   │   ├── difxapi.h
│   │   ├── digitalv.h
│   │   ├── dimm.idl
│   │   ├── dinput.h
│   │   ├── dinputd.h
│   │   ├── dispdib.h
│   │   ├── dispex.idl
│   │   ├── dlgs.h
│   │   ├── dls1.h
│   │   ├── dls2.h
│   │   ├── dmdls.h
│   │   ├── dmerror.h
│   │   ├── dmksctrl.h
│   │   ├── dmo.h
│   │   ├── dmoreg.h
│   │   ├── dmort.h
│   │   ├── dmplugin.h
│   │   ├── dmusbuff.h
│   │   ├── dmusicc.h
│   │   ├── dmusicf.h
│   │   ├── dmusici.h
│   │   ├── dmusics.h
│   │   ├── docobj.idl
│   │   ├── docobjectservice.idl
│   │   ├── downloadmgr.idl
│   │   ├── dpaddr.h
│   │   ├── dplay.h
│   │   ├── dplay8.h
│   │   ├── dplobby.h
│   │   ├── dplobby8.h
│   │   ├── dpnathlp.h
│   │   ├── drmexternals.idl
│   │   ├── dsconf.h
│   │   ├── dsgetdc.h
│   │   ├── dshow.h
│   │   ├── dsound.h
│   │   ├── dsrole.h
│   │   ├── dvdmedia.h
│   │   ├── dvoice.h
│   │   ├── dwmapi.h
│   │   ├── dwrite.idl
│   │   ├── dwrite_1.idl
│   │   ├── dwrite_2.idl
│   │   ├── dwrite_3.idl
│   │   ├── dxdiag.h
│   │   ├── dxerr8.h
│   │   ├── dxerr9.h
│   │   ├── dxfile.h
│   │   ├── dxgi.idl
│   │   ├── dxgi1_2.idl
│   │   ├── dxgi1_3.idl
│   │   ├── dxgi1_4.idl
│   │   ├── dxgi1_5.idl
│   │   ├── dxgi1_6.idl
│   │   ├── dxgicommon.idl
│   │   ├── dxgiformat.idl
│   │   ├── dxgitype.idl
│   │   ├── dxva2api.idl
│   │   ├── dyngraph.idl
│   │   ├── endpointvolume.idl
│   │   ├── errorrep.h
│   │   ├── errors.h
│   │   ├── errrec.idl
│   │   ├── evcode.h
│   │   ├── evntprov.h
│   │   ├── evntrace.h
│   │   ├── evr.idl
│   │   ├── excpt.h
│   │   ├── exdisp.idl
│   │   ├── exdispid.h
│   │   ├── fci.h
│   │   ├── fdi.h
│   │   ├── fileapi.h
│   │   ├── fltdefs.h
│   │   ├── fontsub.h
│   │   ├── fusion.idl
│   │   ├── gameux.idl
│   │   ├── gdiplus.h
│   │   ├── gdipluscolor.h
│   │   ├── gdipluscolormatrix.h
│   │   ├── gdipluseffects.h
│   │   ├── gdiplusenums.h
│   │   ├── gdiplusflat.h
│   │   ├── gdiplusgpstubs.h
│   │   ├── gdiplusimaging.h
│   │   ├── gdiplusinit.h
│   │   ├── gdiplusmem.h
│   │   ├── gdiplusmetaheader.h
│   │   ├── gdipluspixelformats.h
│   │   ├── gdiplustypes.h
│   │   ├── guiddef.h
│   │   ├── hidusage.h
│   │   ├── highlevelmonitorconfigurationapi.h
│   │   ├── hlguids.h
│   │   ├── hlink.idl
│   │   ├── hstring.idl
│   │   ├── htiface.idl
│   │   ├── htiframe.idl
│   │   ├── htmlhelp.h
│   │   ├── http.h
│   │   ├── httprequest.idl
│   │   ├── httprequestid.h
│   │   ├── i_cryptasn1tls.h
│   │   ├── iads.idl
│   │   ├── icftypes.idl
│   │   ├── icm.h
│   │   ├── icmpapi.h
│   │   ├── idispids.h
│   │   ├── ieautomation.idl
│   │   ├── iextag.idl
│   │   ├── ifdef.h
│   │   ├── ifmib.h
│   │   ├── iimgctx.idl
│   │   ├── imagehlp.h
│   │   ├── ime.h
│   │   ├── imm.h
│   │   ├── imnact.idl
│   │   ├── imnxport.idl
│   │   ├── in6addr.h
│   │   ├── inaddr.h
│   │   ├── indexsrv.idl
│   │   ├── initguid.h
│   │   ├── inputscope.idl
│   │   ├── inseng.idl
│   │   ├── inspectable.idl
│   │   ├── interactioncontext.h
│   │   ├── intshcut.h
│   │   ├── ipexport.h
│   │   ├── iphlpapi.h
│   │   ├── ipifcons.h
│   │   ├── ipmib.h
│   │   ├── iprtrmib.h
│   │   ├── iptypes.h
│   │   ├── isguids.h
│   │   ├── knownfolders.h
│   │   ├── ks.h
│   │   ├── ksguid.h
│   │   ├── ksmedia.h
│   │   ├── ksuuids.h
│   │   ├── libloaderapi.h
│   │   ├── lm.h
│   │   ├── lmaccess.h
│   │   ├── lmapibuf.h
│   │   ├── lmat.h
│   │   ├── lmbrowsr.h
│   │   ├── lmcons.h
│   │   ├── lmerr.h
│   │   ├── lmjoin.h
│   │   ├── lmmsg.h
│   │   ├── lmserver.h
│   │   ├── lmshare.h
│   │   ├── lmstats.h
│   │   ├── lmuse.h
│   │   ├── lmuseflg.h
│   │   ├── lmwksta.h
│   │   ├── loadperf.h
│   │   ├── lowlevelmonitorconfigurationapi.h
│   │   ├── lzexpand.h
│   │   ├── mapi.h
│   │   ├── mapicode.h
│   │   ├── mapidefs.h
│   │   ├── mapiform.h
│   │   ├── mapiguid.h
│   │   ├── mapitags.h
│   │   ├── mapiutil.h
│   │   ├── mapival.h
│   │   ├── mapix.h
│   │   ├── mciavi.h
│   │   ├── mcx.h
│   │   ├── mediaerr.h
│   │   ├── mediaobj.idl
│   │   ├── metahost.idl
│   │   ├── mfapi.h
│   │   ├── mferror.h
│   │   ├── mfidl.idl
│   │   ├── mfobjects.idl
│   │   ├── mfreadwrite.idl
│   │   ├── mftransform.idl
│   │   ├── midles.h
│   │   ├── mimeinfo.idl
│   │   ├── mimeole.idl
│   │   ├── minmax.h
│   │   ├── mlang.idl
│   │   ├── mmc.idl
│   │   ├── mmddk.h
│   │   ├── mmdeviceapi.idl
│   │   ├── mmreg.h
│   │   ├── mmstream.idl
│   │   ├── mmsystem.h
│   │   ├── mprapi.h
│   │   ├── mprerror.h
│   │   ├── msacm.h
│   │   ├── msacmdlg.h
│   │   ├── msacmdrv.h
│   │   ├── msasn1.h
│   │   ├── mscat.h
│   │   ├── mscoree.idl
│   │   ├── msctf.idl
│   │   ├── msdadc.idl
│   │   ├── msdaguid.h
│   │   ├── msdasc.idl
│   │   ├── mshtmcid.h
│   │   ├── mshtmdid.h
│   │   ├── mshtmhst.idl
│   │   ├── mshtml.idl
│   │   ├── msi.h
│   │   ├── msidefs.h
│   │   ├── msident.idl
│   │   ├── msinkaut.idl
│   │   ├── msiquery.h
│   │   ├── msopc.idl
│   │   ├── mssip.h
│   │   ├── msstkppg.h
│   │   ├── mstask.idl
│   │   ├── mstcpip.h
│   │   ├── mswsock.h
│   │   ├── msxml.idl
│   │   ├── msxml2.idl
│   │   ├── msxml2did.h
│   │   ├── msxml6.idl
│   │   ├── msxml6did.h
│   │   ├── msxmldid.h
│   │   ├── mtxdm.h
│   │   ├── multimon.h
│   │   ├── nb30.h
│   │   ├── ncrypt.h
│   │   ├── ndrtypes.h
│   │   ├── netcfgx.idl
│   │   ├── netcon.idl
│   │   ├── netfw.idl
│   │   ├── netioapi.h
│   │   ├── netlistmgr.idl
│   │   ├── nldef.h
│   │   ├── npapi.h
│   │   ├── nserror.h
│   │   ├── nspapi.h
│   │   ├── ntddcdrm.h
│   │   ├── ntddndis.h
│   │   ├── ntddscsi.h
│   │   ├── ntddstor.h
│   │   ├── ntdef.h
│   │   ├── ntdsapi.h
│   │   ├── ntlsa.h
│   │   ├── ntquery.h
│   │   ├── ntsecapi.h
│   │   ├── ntsecpkg.h
│   │   ├── ntstatus.h
│   │   ├── oaidl.idl
│   │   ├── objbase.h
│   │   ├── objectarray.idl
│   │   ├── objidl.idl
│   │   ├── objsafe.idl
│   │   ├── objsel.h
│   │   ├── ocidl.idl
│   │   ├── ocmm.idl
│   │   ├── odbcinst.h
│   │   ├── ole2.h
│   │   ├── ole2ver.h
│   │   ├── oleacc.idl
│   │   ├── oleauto.h
│   │   ├── olectl.h
│   │   ├── oledb.idl
│   │   ├── oledberr.h
│   │   ├── oledlg.h
│   │   ├── oleidl.idl
│   │   ├── opcbase.idl
│   │   ├── opcobjectmodel.idl
│   │   ├── opcparturi.idl
│   │   ├── opnrst.idl
│   │   ├── optary.idl
│   │   ├── patchapi.h
│   │   ├── pathcch.h
│   │   ├── pdh.h
│   │   ├── pdhmsg.h
│   │   ├── perflib.h
│   │   ├── perhist.idl
│   │   ├── physicalmonitorenumerationapi.h
│   │   ├── pktdef.h
│   │   ├── poppack.h
│   │   ├── powrprof.h
│   │   ├── prntvpt.h
│   │   ├── profinfo.h
│   │   ├── propidl.idl
│   │   ├── propkey.h
│   │   ├── propkeydef.h
│   │   ├── propsys.idl
│   │   ├── propvarutil.h
│   │   ├── prsht.h
│   │   ├── psapi.h
│   │   ├── pshpack1.h
│   │   ├── pshpack2.h
│   │   ├── pshpack4.h
│   │   ├── pshpack8.h
│   │   ├── pstore.idl
│   │   ├── qedit.idl
│   │   ├── ras.h
│   │   ├── rasdlg.h
│   │   ├── raserror.h
│   │   ├── reason.h
│   │   ├── regstr.h
│   │   ├── restartmanager.h
│   │   ├── richedit.h
│   │   ├── richole.idl
│   │   ├── rmxfguid.h
│   │   ├── rmxftmpl.x
│   │   ├── roapi.h
│   │   ├── roparameterizediid.idl
│   │   ├── row.idl
│   │   ├── rowchg.idl
│   │   ├── rowpos.idl
│   │   ├── rowpsc.idl
│   │   ├── rpc.h
│   │   ├── rpcasync.h
│   │   ├── rpcdce.h
│   │   ├── rpcdcep.h
│   │   ├── rpcndr.h
│   │   ├── rpcnterr.h
│   │   ├── rpcproxy.h
│   │   ├── rpcsal.h
│   │   ├── rstbas.idl
│   │   ├── rstinf.idl
│   │   ├── rstloc.idl
│   │   ├── rstnot.idl
│   │   ├── rtutils.h
│   │   ├── sal.h
│   │   ├── sapi.idl
│   │   ├── sapiddk.idl
│   │   ├── scarderr.h
│   │   ├── schannel.h
│   │   ├── schemadef.h
│   │   ├── schnlsp.h
│   │   ├── sddl.h
│   │   ├── secext.h
│   │   ├── security.h
│   │   ├── sensapi.h
│   │   ├── sensevts.idl
│   │   ├── servprov.idl
│   │   ├── sesprp.idl
│   │   ├── setupapi.h
│   │   ├── sfc.h
│   │   ├── shdeprecated.idl
│   │   ├── shdispid.h
│   │   ├── shellapi.h
│   │   ├── shellscalingapi.h
│   │   ├── shimgdata.idl
│   │   ├── shldisp.idl
│   │   ├── shlguid.h
│   │   ├── shlobj.h
│   │   ├── shlwapi.h
│   │   ├── shobjidl.idl
│   │   ├── shtypes.idl
│   │   ├── sipbase.h
│   │   ├── slerror.h
│   │   ├── slpublic.h
│   │   ├── snmp.h
│   │   ├── softpub.h
│   │   ├── sperror.h
│   │   ├── sql.h
│   │   ├── sqlext.h
│   │   ├── sqltypes.h
│   │   ├── sqlucode.h
│   │   ├── srcrst.idl
│   │   ├── srrestoreptapi.h
│   │   ├── sspi.h
│   │   ├── stamp-h
│   │   ├── stamp-h.in
│   │   ├── stdole2.idl
│   │   ├── stgprop.h
│   │   ├── sti.h
│   │   ├── storage.h
│   │   ├── strmif.idl
│   │   ├── strsafe.h
│   │   ├── structuredquerycondition.idl
│   │   ├── svrapi.h
│   │   ├── t2embapi.h
│   │   ├── tapi.h
│   │   ├── taskschd.idl
│   │   ├── tchar.h
│   │   ├── tcpestats.h
│   │   ├── tcpmib.h
│   │   ├── textserv.h
│   │   ├── textstor.idl
│   │   ├── tlhelp32.h
│   │   ├── tlogstg.idl
│   │   ├── tmschema.h
│   │   ├── tom.idl
│   │   ├── traffic.h
│   │   ├── transact.idl
│   │   ├── twain.h
│   │   ├── txcoord.idl
│   │   ├── txdtc.idl
│   │   ├── udpmib.h
│   │   ├── uianimation.idl
│   │   ├── uiautomation.h
│   │   ├── uiautomationclient.idl
│   │   ├── uiautomationcore.idl
│   │   ├── uiautomationcoreapi.h
│   │   ├── uiribbon.idl
│   │   ├── unknwn.idl
│   │   ├── urlhist.idl
│   │   ├── urlmon.idl
│   │   ├── userenv.h
│   │   ├── usp10.h
│   │   ├── uuids.h
│   │   ├── uxtheme.h
│   │   ├── vdmdbg.h
│   │   ├── ver.h
│   │   ├── verrsrc.h
│   │   ├── vfw.h
│   │   ├── vfwmsgs.h
│   │   ├── virtdisk.h
│   │   ├── vmr9.idl
│   │   ├── vmrender.idl
│   │   ├── vss.idl
│   │   ├── vsstyle.h
│   │   ├── vssym32.h
│   │   ├── vswriter.h
│   │   ├── wbemcli.idl
│   │   ├── wbemdisp.idl
│   │   ├── wbemprov.idl
│   │   ├── wct.h
│   │   ├── webservices.h
│   │   ├── werapi.h
│   │   ├── wfext.h
│   │   ├── wia.h
│   │   ├── wia_lh.idl
│   │   ├── wia_xp.idl
│   │   ├── wiadef.h
│   │   ├── wimgapi.h
│   │   ├── winbase.h
│   │   ├── wincodec.idl
│   │   ├── wincodecsdk.idl
│   │   ├── wincon.h
│   │   ├── wincred.h
│   │   ├── wincrypt.h
│   │   ├── windef.h
│   │   ├── windns.h
│   │   ├── windows.foundation.idl
│   │   ├── windows.h
│   │   ├── windowsx.h
│   │   ├── winerror.h
│   │   ├── winevt.h
│   │   ├── wingdi.h
│   │   ├── winhttp.h
│   │   ├── wininet.h
│   │   ├── winineti.h
│   │   ├── winioctl.h
│   │   ├── winldap.h
│   │   ├── winnetwk.h
│   │   ├── winnls.h
│   │   ├── winnls32.h
│   │   ├── winnt.h
│   │   ├── winnt.rh
│   │   ├── winperf.h
│   │   ├── winreg.h
│   │   ├── winresrc.h
│   │   ├── winsafer.h
│   │   ├── winscard.h
│   │   ├── winsmcrd.h
│   │   ├── winsnmp.h
│   │   ├── winsock.h
│   │   ├── winsock2.h
│   │   ├── winspool.h
│   │   ├── winstring.h
│   │   ├── winsvc.h
│   │   ├── winsxs.idl
│   │   ├── wintab.h
│   │   ├── wintabx.h
│   │   ├── winternl.h
│   │   ├── wintrust.h
│   │   ├── winuser.h
│   │   ├── winuser.rh
│   │   ├── winver.h
│   │   ├── wlanapi.h
│   │   ├── wmcodecdsp.idl
│   │   ├── wmdrmsdk.idl
│   │   ├── wmistr.h
│   │   ├── wmium.h
│   │   ├── wmiutils.idl
│   │   ├── wmp.idl
│   │   ├── wmpids.h
│   │   ├── wmsbuffer.idl
│   │   ├── wmsdk.h
│   │   ├── wmsdkidl.idl
│   │   ├── wnaspi32.h
│   │   ├── wownt32.h
│   │   ├── wpcapi.idl
│   │   ├── ws2def.h
│   │   ├── ws2ipdef.h
│   │   ├── ws2spi.h
│   │   ├── ws2tcpip.h
│   │   ├── wsdapi.h
│   │   ├── wsdbase.idl
│   │   ├── wsddisco.idl
│   │   ├── wsdtypes.h
│   │   ├── wsdutil.h
│   │   ├── wsdxml.idl
│   │   ├── wsdxmldom.h
│   │   ├── wshisotp.h
│   │   ├── wsipx.h
│   │   ├── wsnwlink.h
│   │   ├── wtsapi32.h
│   │   ├── wtypes.idl
│   │   ├── wuapi.idl
│   │   ├── x3daudio.h
│   │   ├── xapo.idl
│   │   ├── xapofx.h
│   │   ├── xaudio2.idl
│   │   ├── xaudio2fx.idl
│   │   ├── xcmc.h
│   │   ├── xinput.h
│   │   ├── xmldom.h
│   │   ├── xmldom.idl
│   │   ├── xmldomdid.h
│   │   ├── xmldso.idl
│   │   ├── xmldsodid.h
│   │   ├── xmllite.idl
│   │   └── zmouse.h
│   ├── wine/
│   │   ├── config.h
│   │   ├── debug.h
│   │   ├── exception.h
│   │   ├── heap.h
│   │   ├── library.h
│   │   ├── list.h
│   │   ├── mmsystem16.h
│   │   ├── port.h
│   │   ├── server.h
│   │   ├── server_protocol.h
│   │   ├── unicode.h
│   │   ├── winaspi.h
│   │   ├── winbase16.h
│   │   ├── windef16.h
│   │   ├── wine_common_ver.rc
│   │   ├── wingdi16.h
│   │   ├── winnet16.h
│   │   ├── winuser16.h
│   │   └── wpp.h
│   ├── wine.def
│   ├── wine.vcxproj
│   ├── wine.vcxproj.filters
│   └── winuser.rh
├── winecrt0/
│   ├── CMakeLists.txt
│   ├── crt0_private.h
│   ├── dll_entry.c
│   ├── exception.c
│   ├── exe16_entry.c
│   ├── init.c
│   ├── stub.c
│   ├── winecrt0.vcxproj
│   └── winecrt0.vcxproj.filters
├── wing/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── wing.c
│   ├── wing.def
│   ├── wing.dll16.spec
│   └── wing.vcxproj
├── winhlp32/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── REOLEStorage1
│   ├── callback.c
│   ├── hlpfile.c
│   ├── hlpfile.h
│   ├── macro.c
│   ├── macro.h
│   ├── macro.lex.l
│   ├── string.c
│   ├── tom.h
│   ├── winhelp.c
│   ├── winhelp.h
│   ├── winhelp_res.h
│   ├── winhlp32.rc
│   ├── winhlp32.vcxproj
│   └── winhlp32.vcxproj.filters
├── winnls/
│   ├── CMakeLists.txt
│   ├── winnls.c
│   ├── winnls.def
│   ├── winnls.dll16.spec
│   ├── winnls.vcxproj
│   └── winnls.vcxproj.filters
├── winoldap/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── winoldap.c
│   ├── winoldap.def
│   ├── winoldap.mod16.spec
│   └── winoldap.vcxproj
├── winsock/
│   ├── CMakeLists.txt
│   ├── Makefile.in
│   ├── socket.c
│   ├── winsock.def
│   ├── winsock.dll16.spec
│   ├── winsock.vcxproj
│   └── winsock16.h
├── winspool/
│   ├── CMakeLists.txt
│   ├── winspool.c
│   ├── winspool.def
│   ├── winspool.drv16.spec
│   └── winspool.vcxproj
├── wow32/
│   ├── CMakeLists.txt
│   ├── wow32.def
│   ├── wow32.spec
│   ├── wow32.vcxproj
│   ├── wow32.vcxproj.filters
│   ├── wow_main.c
│   └── wownt32.h
└── wpp/
    ├── CMakeLists.txt
    ├── ppl.l
    ├── ppy.y
    ├── preproc.c
    ├── wpp.c
    ├── wpp.vcxproj
    └── wpp_private.h
Download .txt
Showing preview only (1,430K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17786 symbols across 586 files)

FILE: avifile/main.c
  type AVISTREAMINFO16 (line 26) | typedef struct _AVISTREAMINFO16 {
  type frame_wrapper16 (line 47) | struct frame_wrapper16
  function free_segptr_frame (line 56) | static void free_segptr_frame(struct frame_wrapper16 *wrapper)
  function SEGPTR (line 69) | static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *...
  function PGETFRAME (line 100) | PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINF...
  function SEGPTR (line 122) | SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos)
  function HRESULT (line 143) | HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
  function HRESULT (line 159) | HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, ...
  function HRESULT (line 195) | HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi...

FILE: commctrl/commctrl.c
  type TBBUTTON16 (line 14) | typedef struct  {
  type TBSAVEPARAMS16 (line 21) | typedef struct {
  function InitCommonControls16 (line 33) | void WINAPI InitCommonControls16(void)
  function LRESULT (line 63) | LRESULT WINAPI StatusWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, LP...
  function TBBUTTON16_32 (line 116) | void TBBUTTON16_32(LPTBBUTTON btn32, LPTBBUTTON16 lpButtons)
  function TBBUTTON32_16 (line 125) | void TBBUTTON32_16(LPTBBUTTON btn32, LPTBBUTTON16 lpButtons)
  function LRESULT (line 133) | LRESULT WINAPI ToolbarWindowProc16(HWND hwnd, UINT msg, WPARAM wParam, L...
  function HWND16 (line 224) | HWND16 WINAPI CreateToolbarEx16(HWND16 hwnd, DWORD style /* window style...
  function HWND16 (line 272) | HWND16 WINAPI CreateStatusWindow16(LONG style, LPCSTR text, HWND16 hwndP...
  function LPRECT (line 280) | LPRECT RECT16_32(LPRECT rect32, LPRECT16 lprc)
  function LPRECT16 (line 290) | LPRECT16 RECT32_16(LPRECT rect32, LPRECT16 lprc)
  function GetEffectiveClientRect16 (line 301) | void WINAPI GetEffectiveClientRect16(HWND16 hWnd, LPRECT16 lprc, const I...
  function find_sub_menu (line 325) | static int find_sub_menu( HMENU *hmenu, HMENU16 target )
  type MENUHELP16 (line 345) | typedef struct
  function get_menu_off (line 356) | static int get_menu_off(HMENU hMainMenu, HMENU hSubMenu)
  function VOID (line 371) | VOID WINAPI
  function HBITMAP16 (line 455) | HBITMAP16 WINAPI CreateMappedBitmap16(HINSTANCE16 hInstance, INT16 idBit...
  function HWND16 (line 554) | HWND16 WINAPI CreateToolbar16(HWND16 hwnd, DWORD style, UINT16 wID, INT1...
  function BOOL16 (line 561) | BOOL16 WINAPI MakeDragList16(HWND16 hLB)
  function HWND16 (line 566) | HWND16 WINAPI CreateHeaderWindow16(LONG a1, LPSTR a2, HWND16 a3, WORD a4)

FILE: commdlg/cdlg16.h
  type UINT16 (line 36) | typedef UINT16 (CALLBACK *LPOFNHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
  type OPENFILENAME16 (line 38) | typedef struct {
  type UINT16 (line 61) | typedef UINT16 (CALLBACK *LPCCHOOKPROC16) (HWND16, UINT16, WPARAM16, LPA...
  type CHOOSECOLOR16 (line 63) | typedef struct {
  type CHOOSECOLOR16 (line 74) | typedef CHOOSECOLOR16 *LPCHOOSECOLOR16;
  type UINT16 (line 76) | typedef UINT16 (CALLBACK *LPFRHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
  type FINDREPLACE16 (line 77) | typedef struct {
  type UINT16 (line 92) | typedef UINT16 (CALLBACK *LPCFHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
  type CHOOSEFONT16 (line 93) | typedef struct
  type UINT16 (line 118) | typedef UINT16 (CALLBACK *LPPRINTHOOKPROC16) (HWND16, UINT16, WPARAM16, ...
  type UINT16 (line 119) | typedef UINT16 (CALLBACK *LPSETUPHOOKPROC16) (HWND16, UINT16, WPARAM16, ...
  type PRINTDLG16 (line 120) | typedef struct
  type COMMDLGTHUNK (line 160) | typedef struct
  type dialog_data (line 183) | typedef struct

FILE: commdlg/colordlg.c
  function BOOL16 (line 45) | BOOL16 CALLBACK ColorDlgProc16( HWND16 hDlg16, UINT16 message, WPARAM16 ...
  function BOOL16 (line 54) | BOOL16 WINAPI ChooseColor16( LPCHOOSECOLOR16 cc16 )

FILE: commdlg/filedlg.c
  function UINT_PTR (line 51) | static UINT_PTR CALLBACK thunk_hook(COMMDLGTHUNK *thunk, HWND hwnd, UINT...
  function init_thunk (line 62) | static void init_thunk()
  function delete_thunk (line 76) | void delete_thunk(LPVOID func)
  function COMMDLGTHUNK (line 84) | COMMDLGTHUNK *allocate_thunk(SEGPTR ofnseg, SEGPTR func)
  function WORD (line 109) | static inline WORD get_word( const char **ptr )
  function copy_string (line 116) | static inline void copy_string( WORD **out, const char **in, DWORD maxlen )
  function copy_dword (line 123) | static inline void copy_dword( WORD **out, const char **in )
  function LPDLGTEMPLATEA (line 130) | static LPDLGTEMPLATEA convert_dialog( const char *p, DWORD size )
  function UINT_PTR (line 207) | static UINT_PTR CALLBACK dummy_hook( HWND hwnd, UINT msg, WPARAM wp, LPA...
  function BOOL16 (line 215) | BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 w...
  function BOOL16 (line 224) | BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 w...
  function DWORD (line 230) | DWORD get_ofn_flag(DWORD flag)
  function BOOL16 (line 246) | BOOL16 WINAPI GetOpenFileName16( SEGPTR ofn ) /* [in/out] address of str...
  function BOOL16 (line 337) | BOOL16 WINAPI GetSaveFileName16( SEGPTR ofn ) /* [in/out] address of str...
  function GetFileTitle16 (line 419) | short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf)

FILE: commdlg/finddlg.c
  function LRESULT (line 44) | static LRESULT FINDDLG_WMCommand(HWND hWnd, WPARAM wParam,
  function INT_PTR (line 87) | static INT_PTR CALLBACK find_text_dlgproc(HWND hWnd, UINT wMsg, WPARAM w...
  function HWND16 (line 153) | HWND16 WINAPI FindText16( SEGPTR find )
  function BOOL16 (line 179) | BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 w...
  function LRESULT (line 189) | static LRESULT REPLACEDLG_WMInitDialog(HWND hWnd, LPARAM lParam,
  function LRESULT (line 199) | static LRESULT REPLACEDLG_WMCommand(HWND hWnd, WPARAM wParam,
  function INT_PTR (line 269) | static INT_PTR CALLBACK replace_text_dlgproc(HWND hWnd, UINT wMsg, WPARA...
  function HWND16 (line 328) | HWND16 WINAPI ReplaceText16( SEGPTR find )
  function BOOL16 (line 354) | BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM1...
  function DWORD (line 364) | DWORD WINAPI CommDlgExtendedError16(void)

FILE: commdlg/fontdlg.c
  function INT16 (line 46) | INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics,
  function INT16 (line 56) | INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics,
  function BOOL16 (line 66) | BOOL16 WINAPI ChooseFont16(SEGPTR cf)
  function BOOL16 (line 156) | BOOL16 CALLBACK FormatCharDlgProc16(HWND16 hDlg16, UINT16 message,

FILE: commdlg/printdlg.c
  type DEVMODE16 (line 50) | typedef struct {
  function DEVMODE16To32 (line 72) | void DEVMODE16To32(CONST DEVMODE16 *src, LPDEVMODEA dst)
  function DEVMODE32To16 (line 94) | void DEVMODE32To16(LPDEVMODE16 dst, const LPDEVMODEA src)
  function global_handle_to_16 (line 117) | static void global_handle_to_16( HGLOBAL16 *h16, HGLOBAL handle )
  function HGLOBAL (line 137) | static HGLOBAL global_handle_from_16( HGLOBAL16 handle )
  function LPDLGTEMPLATEA (line 155) | LPDLGTEMPLATEA resource_to_dialog32(HINSTANCE16 hInst, LPCSTR name, WORD...
  function LPDLGTEMPLATEA (line 171) | LPDLGTEMPLATEA handle_to_dialog32(HGLOBAL16 hg, WORD *res)
  function BOOL16 (line 203) | BOOL16 WINAPI PrintDlg16( SEGPTR pd )
  function BOOL16 (line 303) | BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wPar...
  function BOOL16 (line 312) | BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16...

FILE: compobj/compobj.c
  type IMalloc16Impl (line 63) | typedef struct
  function IMalloc16Impl (line 69) | static inline IMalloc16Impl *impl_from_IMalloc16(IMalloc16 *iface)
  function HRESULT (line 77) | HRESULT CDECL IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,...
  function ULONG (line 93) | ULONG CDECL IMalloc16_fnAddRef(IMalloc16* iface) {
  function ULONG (line 103) | ULONG CDECL IMalloc16_fnRelease(IMalloc16* iface) {
  function SEGPTR (line 113) | SEGPTR CDECL IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
  function VOID (line 125) | VOID CDECL IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
  function SEGPTR (line 144) | SEGPTR CDECL IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
  function DWORD (line 165) | DWORD CDECL IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv)
  function INT16 (line 176) | INT16 CDECL IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) {
  function LPVOID (line 186) | LPVOID CDECL IMalloc16_fnHeapMinimize(IMalloc16* iface) {
  function LPMALLOC16 (line 196) | static LPMALLOC16
  function DWORD (line 229) | DWORD WINAPI CoBuildVersion16(void)
  type ole16_task_data (line 234) | typedef struct
  function ole16_task_data (line 240) | static ole16_task_data *get_current_task_data()
  function HRESULT (line 257) | HRESULT WINAPI get_task_imalloc16(SEGPTR *lpMalloc)
  function HRESULT (line 277) | HRESULT WINAPI CoGetMalloc16(
  function HRESULT (line 311) | HRESULT WINAPI CoCreateStandardMalloc16(MEMCTX dwMemContext,
  function HRESULT (line 324) | HRESULT WINAPI CoInitialize16(
  function CoUninitialize16 (line 354) | void WINAPI CoUninitialize16(void)
  function CoFreeUnusedLibraries16 (line 368) | void WINAPI CoFreeUnusedLibraries16(void)
  function BOOL16 (line 381) | BOOL16 WINAPI IsEqualGUID16(
  function HRESULT (line 390) | HRESULT WINAPI IIDFromString16(LPSTR lpsz, LPIID lpiid)
  function HRESULT (line 416) | HRESULT WINAPI CLSIDFromString16(
  function HRESULT (line 425) | HRESULT WINAPI guid_str_to_clsid(LPCOLESTR16 idstr, CLSID *id)
  function HRESULT (line 481) | HRESULT WINAPI progid_to_clsid(LPCOLESTR16 idstr, CLSID *id)
  function HRESULT (line 513) | static HRESULT
  function HRESULT (line 551) | HRESULT WINAPI StringFromCLSID16(
  function HRESULT (line 575) | HRESULT WINAPI ProgIDFromCLSID16(
  function HRESULT (line 605) | HRESULT WINAPI LookupETask16(HTASK16 *hTask,LPVOID p) {
  function HRESULT (line 616) | HRESULT WINAPI SetETask16(HTASK16 hTask, LPVOID p) {
  function HRESULT (line 625) | HRESULT WINAPI CallObjectInWOW(LPVOID p1,LPVOID p2) {
  function HRESULT (line 635) | HRESULT WINAPI CoRegisterClassObject16(
  function HRESULT (line 655) | HRESULT WINAPI CoRevokeClassObject16(DWORD dwRegister) /* [in] token on ...
  function BOOL (line 672) | BOOL WINAPI IsValidInterface16(SEGPTR punk)
  function BOOL16 (line 690) | BOOL16 WINAPI CoFileTimeToDosDateTime16(const FILETIME *ft, LPWORD lpDos...
  function BOOL16 (line 698) | BOOL16 WINAPI CoDosDateTimeToFileTime16(WORD wDosDate, WORD wDosTime, FI...
  function DWORD (line 706) | DWORD WINAPI CoGetCurrentProcess16(void)
  function HRESULT (line 714) | HRESULT WINAPI CoRegisterMessageFilter16(
  function HRESULT (line 730) | HRESULT WINAPI CoLockObjectExternal16(
  function HRESULT (line 742) | HRESULT WINAPI CoGetState16(LPDWORD state)
  function BOOL (line 757) | BOOL WINAPI COMPOBJ_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ...
  function SEGPTR (line 766) | SEGPTR WINAPI CoMemAlloc(DWORD size, MEMCTX dwMemContext, DWORD x) {
  function HRESULT (line 791) | HRESULT WINAPI CLSIDFromProgID16(LPCOLESTR16 progid, LPCLSID riid)
  function INT16 (line 816) | INT16 WINAPI StringFromGUID216(REFGUID id, LPOLESTR16 str, INT16 cmax)
  function HRESULT (line 830) | HRESULT WINAPI CoFileTimeNow16( FILETIME *lpFileTime )
  function HRESULT (line 839) | HRESULT WINAPI CoGetClassObject16(
  function HRESULT (line 939) | HRESULT WINAPI CoCreateGuid16(GUID *pguid)
  function HRESULT (line 947) | HRESULT WINAPI CoCreateInstance16(
  function HRESULT (line 983) | HRESULT WINAPI CoDisconnectObject16( /*LPUNKNOWN*/SEGPTR lpUnk, DWORD re...
  function HRESULT (line 989) | HRESULT WINAPI CoIsOle1Class16(REFCLSID rclsid)
  function HRESULT (line 995) | HRESULT WINAPI FnAssert16(LPCSTR expr, LPCSTR msg, LPCSTR file, WORD line)
  function HRESULT (line 1001) | HRESULT WINAPI CoGetTreatAsClass16(REFCLSID clsidOld, LPCLSID pClsidNew)
  function HRESULT (line 1009) | HRESULT WINAPI CoTreatAsClass16(REFCLSID clsidOld, REFCLSID clsidNew)

FILE: convertwinefile/main.c
  function memcount (line 25) | inline static size_t memcount(const char* begin, char c, size_t n) {
  function copy (line 88) | void copy(const char * src, const char *dst)
  type makein (line 97) | typedef struct
  function parsemakein (line 154) | void parsemakein(FILE *fp, makein *in)
  type vcxpojlineattr (line 204) | typedef enum
  type vcxpojline (line 214) | typedef struct
  function generateVCproject (line 340) | void generateVCproject(makein *in, FILE *out)
  function generateDEF (line 410) | void generateDEF(makein *makedata, const char *spec, const char *path)
  function generateASM (line 419) | void generateASM(makein *makedata, const char *spec, const char *path, c...
  function main (line 428) | int main(int argc, char **argv)

FILE: convspec/build.h
  type ORD_TYPE (line 41) | typedef enum
  type SPEC_TYPE (line 55) | typedef enum
  type arg_type (line 61) | enum arg_type
  type ORD_VARIABLE (line 80) | typedef struct
  type ORD_FUNCTION (line 86) | typedef struct
  type ORD_ABS (line 93) | typedef struct
  type ORDDEF (line 98) | typedef struct
  type DLLSPEC (line 115) | typedef struct
  type target_cpu (line 143) | enum target_cpu
  type target_platform (line 148) | enum target_platform
  type target_cpu (line 158) | enum target_cpu
  type target_platform (line 159) | enum target_platform
  type strarray (line 161) | struct strarray
  type strarray (line 235) | struct strarray
  type strarray (line 236) | struct strarray
  type strarray (line 237) | struct strarray
  type strarray (line 238) | struct strarray
  type strarray (line 238) | struct strarray
  type strarray (line 251) | struct strarray
  type strarray (line 252) | struct strarray
  type strarray (line 253) | struct strarray
  type strarray (line 254) | struct strarray
  type strarray (line 360) | struct strarray
  type strarray (line 361) | struct strarray
  type strarray (line 362) | struct strarray
  type strarray (line 363) | struct strarray
  type strarray (line 364) | struct strarray

FILE: convspec/convspec.c
  type option (line 11) | struct option
  type option (line 12) | struct option
  function getopt_long (line 19) | static int getopt_long(int ___argc, char *const *___argv,
  function getopt_long_only (line 26) | static int getopt_long_only(int ___argc, char *const *___argv,
  function mkstemps (line 33) | int mkstemps(char *template, int suffix_len)
  function main (line 44) | int main(int argc, char* argv[])

FILE: convspec/import.c
  type import_func (line 41) | struct import_func
  type import (line 48) | struct import
  type strarray (line 63) | struct strarray
  type strarray (line 64) | struct strarray
  type strarray (line 65) | struct strarray
  type strarray (line 66) | struct strarray
  type list (line 68) | struct list
  type list (line 69) | struct list
  type strarray (line 71) | struct strarray
  function name_cmp (line 87) | static int name_cmp( const void *name, const void *entry )
  function func_cmp (line 93) | static int func_cmp( const void *func1, const void *func2 )
  function remove_name (line 102) | static inline void remove_name( struct strarray *table, unsigned int idx )
  type strarray (line 111) | struct strarray
  function sort_names (line 120) | static inline void sort_names( struct strarray *table )
  function ORDDEF (line 126) | static inline ORDDEF *find_export( const char *name, ORDDEF **table, int...
  function free_imports (line 139) | static void free_imports( struct import *imp )
  function is_delayed_import (line 150) | static int is_delayed_import( const char *name )
  type import (line 162) | struct import
  type import (line 164) | struct import
  function DLLSPEC (line 206) | static DLLSPEC *read_import_lib( struct import *imp )
  function add_import_dll (line 266) | void add_import_dll( const char *name, const char *filename )
  function add_delayed_import (line 293) | void add_delayed_import( const char *name )
  function add_extra_ld_symbol (line 307) | void add_extra_ld_symbol( const char *name )
  type import (line 313) | struct import
  type import (line 315) | struct import
  function add_import_func (line 335) | static void add_import_func( struct import *imp, const char *name, const...
  function add_undef_import (line 350) | static void add_undef_import( const char *name, int is_ordinal )
  function has_stubs (line 379) | static int has_stubs( const DLLSPEC *spec )
  function add_extra_undef_symbols (line 391) | static void add_extra_undef_symbols( DLLSPEC *spec )
  function check_unused (line 400) | static int check_unused( const struct import* imp, const DLLSPEC *spec )
  function check_undefined_forwards (line 420) | static void check_undefined_forwards( DLLSPEC *spec )
  function check_undefined_exports (line 452) | static void check_undefined_exports( DLLSPEC *spec )
  type strarray (line 520) | struct strarray
  function read_undef_symbols (line 532) | void read_undef_symbols( DLLSPEC *spec, char **argv )
  function resolve_dll_imports (line 573) | void resolve_dll_imports( DLLSPEC *spec, struct list *list )
  function resolve_imports (line 610) | void resolve_imports( DLLSPEC *spec )
  function is_undefined (line 620) | int is_undefined( const char *name )
  function output_get_pc_thunk (line 626) | void output_get_pc_thunk(void)
  function output_import_thunk (line 641) | static void output_import_thunk( const char *name, const char *table, in...
  function has_imports (line 703) | int has_imports(void)
  function output_immediate_imports (line 709) | static void output_immediate_imports(void)
  function output_immediate_import_thunks (line 791) | static void output_immediate_import_thunks(void)
  function output_delayed_imports (line 819) | static void output_delayed_imports( const DLLSPEC *spec )
  function output_delayed_import_thunks (line 912) | static void output_delayed_import_thunks( const DLLSPEC *spec )
  function output_external_link_imports (line 1149) | static void output_external_link_imports( DLLSPEC *spec )
  function output_stubs (line 1190) | void output_stubs( DLLSPEC *spec )
  function output_imports (line 1326) | void output_imports( DLLSPEC *spec )
  function new_output_as_file (line 1336) | static void new_output_as_file( const char *prefix )
  function assemble_files (line 1347) | static void assemble_files( const char *prefix )
  function build_library (line 1363) | static void build_library( const char *output_name, char **argv, int cre...
  function build_windows_import_lib (line 1379) | static void build_windows_import_lib( DLLSPEC *spec )
  function build_unix_import_lib (line 1415) | static void build_unix_import_lib( DLLSPEC *spec )
  function output_import_lib (line 1477) | void output_import_lib( DLLSPEC *spec, char **argv )

FILE: convspec/main.c.h
  type target_cpu (line 51) | enum target_cpu
  type target_cpu (line 53) | enum target_cpu
  type target_cpu (line 55) | enum target_cpu
  type target_cpu (line 57) | enum target_cpu
  type target_cpu (line 59) | enum target_cpu
  type target_platform (line 65) | enum target_platform
  type target_platform (line 67) | enum target_platform
  type target_platform (line 69) | enum target_platform
  type target_platform (line 71) | enum target_platform
  type target_platform (line 73) | enum target_platform
  type strarray (line 85) | struct strarray
  type strarray (line 86) | struct strarray
  type strarray (line 87) | struct strarray
  type strarray (line 88) | struct strarray
  type strarray (line 89) | struct strarray
  type strarray (line 104) | struct strarray
  type exec_mode_values (line 107) | enum exec_mode_values
  type exec_mode_values (line 117) | enum exec_mode_values
  type target_platform (line 122) | enum target_platform
  function set_dll_file_name (line 135) | static void set_dll_file_name( const char *name, DLLSPEC *spec )
  function init_dll_name (line 152) | static void init_dll_name( DLLSPEC *spec )
  function set_subsystem (line 170) | static void set_subsystem( const char *subsystem, DLLSPEC *spec )
  function set_target (line 194) | static void set_target( const char *target )
  function cleanup (line 240) | static void cleanup(void)
  function exit_on_signal (line 246) | static void exit_on_signal( int sig )
  type long_options_values (line 298) | enum long_options_values
  type option (line 320) | struct option
  function usage (line 359) | static void usage( int exit_code )
  function set_exec_mode (line 365) | static void set_exec_mode( enum exec_mode_values mode )
  function load_resources (line 564) | static void load_resources( char *argv[], DLLSPEC *spec )
  function load_import_libs (line 594) | static void load_import_libs( char *argv[] )
  function parse_input_file (line 608) | static int parse_input_file( DLLSPEC *spec )
  function maiAn (line 627) | int maiAn(int argc, char **argv)

FILE: convspec/parser.c
  function IsNumberString (line 92) | static int IsNumberString(const char *s)
  function is_token_separator (line 98) | static inline int is_token_separator( char ch )
  function is_token_comment (line 103) | static inline int is_token_comment( char ch )
  function get_next_line (line 109) | static int get_next_line(void)
  function ORDDEF (line 163) | static ORDDEF *add_entry_point( DLLSPEC *spec )
  function parse_spec_variable (line 183) | static int parse_spec_variable( ORDDEF *odp, DLLSPEC *spec )
  function parse_spec_arguments (line 245) | static int parse_spec_arguments( ORDDEF *odp, DLLSPEC *spec, int optional )
  function parse_spec_export (line 305) | static int parse_spec_export( ORDDEF *odp, DLLSPEC *spec )
  function parse_spec_equate (line 368) | static int parse_spec_equate( ORDDEF *odp, DLLSPEC *spec )
  function parse_spec_stub (line 401) | static int parse_spec_stub( ORDDEF *odp, DLLSPEC *spec )
  function parse_spec_extern (line 420) | static int parse_spec_extern( ORDDEF *odp, DLLSPEC *spec )
  function parse_spec_ordinal (line 529) | static int parse_spec_ordinal( int ordinal, DLLSPEC *spec )
  function name_compare (line 668) | static int name_compare( const void *ptr1, const void *ptr2 )
  function assign_names (line 682) | static void assign_names( DLLSPEC *spec )
  function assign_ordinals (line 734) | static void assign_ordinals( DLLSPEC *spec )
  function add_16bit_exports (line 793) | void add_16bit_exports( DLLSPEC *spec32, DLLSPEC *spec16 )
  function parse_spec_file (line 857) | int parse_spec_file( FILE *file, DLLSPEC *spec )
  function parse_def_library (line 898) | static int parse_def_library( DLLSPEC *spec )
  function parse_def_stack_heap_size (line 932) | static int parse_def_stack_heap_size( int is_stack, DLLSPEC *spec )
  function parse_def_export (line 964) | static int parse_def_export( char *name, DLLSPEC *spec )
  function parse_def_file (line 1076) | int parse_def_file( FILE *file, DLLSPEC *spec )

FILE: convspec/relay.c
  function function_header (line 40) | static void function_header( const char *name )
  function BuildCallFrom16Core (line 115) | static void BuildCallFrom16Core( int reg_func, int thunk )
  function BuildCallTo16Core (line 384) | static void BuildCallTo16Core( int reg_func )
  function BuildRet16Func (line 544) | static void BuildRet16Func(void)
  function BuildCallTo32CBClient (line 665) | static void BuildCallTo32CBClient( int isEx )
  function output_asm_relays16 (line 757) | void output_asm_relays16(void)

FILE: convspec/res16.c
  type string_id (line 38) | struct string_id
  type resource (line 45) | struct resource
  type res_type (line 56) | struct res_type
  type res_tree (line 65) | struct res_tree
  type resource (line 72) | struct resource
  type res_type (line 78) | struct res_type
  type res_tree (line 78) | struct res_tree
  type resource (line 78) | struct resource
  type res_type (line 80) | struct res_type
  function get_string (line 90) | static void get_string( struct string_id *str )
  function load_next_resource (line 108) | static void load_next_resource( DLLSPEC *spec )
  function load_res16_file (line 123) | void load_res16_file( const char *name, DLLSPEC *spec )
  function load_res16_from_buf (line 129) | void load_res16_from_buf( const unsigned char *buf, int size, DLLSPEC *s...
  function cmp_string (line 138) | static int cmp_string( const struct string_id *str1, const struct string...
  function cmp_res (line 151) | static int cmp_res( const void *ptr1, const void *ptr2 )
  type res_tree (line 162) | struct res_tree
  type res_tree (line 165) | struct res_tree
  type res_type (line 166) | struct res_type
  type resource (line 167) | struct resource
  function free_resource_tree (line 211) | static void free_resource_tree( struct res_tree *tree )
  function output_string (line 218) | static void output_string( const char *str )
  function output_bin_string (line 227) | static void output_bin_string( const char *str )
  function output_res16_data (line 234) | void output_res16_data( DLLSPEC *spec )
  function output_res16_directory (line 247) | void output_res16_directory( DLLSPEC *spec )
  function output_bin_res16_data (line 288) | void output_bin_res16_data( DLLSPEC *spec )
  function output_bin_res16_directory (line 298) | void output_bin_res16_directory( DLLSPEC *spec, unsigned int data_offset )

FILE: convspec/res32.c
  type WCHAR (line 37) | typedef unsigned short WCHAR;
  type string_id (line 40) | struct string_id
  type resource (line 47) | struct resource
  type res_name (line 60) | struct res_name
  type res_type (line 70) | struct res_type
  type res_tree (line 81) | struct res_tree
  type resource (line 94) | struct resource
  function strlenW (line 100) | static inline unsigned int strlenW( const WCHAR *str )
  function strcmpW (line 107) | static inline int strcmpW( const WCHAR *str1, const WCHAR *str2 )
  type res_name (line 113) | struct res_name
  type res_type (line 113) | struct res_type
  type resource (line 113) | struct resource
  type res_name (line 115) | struct res_name
  type res_type (line 125) | struct res_type
  type res_tree (line 125) | struct res_tree
  type resource (line 125) | struct resource
  type res_type (line 127) | struct res_type
  function get_string (line 138) | static void get_string( struct string_id *str )
  function put_string (line 157) | static void put_string( const struct string_id *str )
  function dump_res_data (line 172) | static void dump_res_data( const struct resource *res )
  function check_header (line 196) | static int check_header(void)
  function load_next_resource (line 215) | static void load_next_resource( DLLSPEC *spec )
  function load_res32_file (line 245) | int load_res32_file( const char *name, DLLSPEC *spec )
  function cmp_string (line 259) | static int cmp_string( const struct string_id *str1, const struct string...
  function cmp_res (line 272) | static int cmp_res( const void *ptr1, const void *ptr2 )
  type string_id (line 284) | struct string_id
  function remove_duplicate_resources (line 295) | static void remove_duplicate_resources( DLLSPEC *spec )
  type res_tree (line 320) | struct res_tree
  type res_tree (line 323) | struct res_tree
  type res_type (line 324) | struct res_type
  type res_name (line 325) | struct res_name
  type resource (line 326) | struct resource
  function free_resource_tree (line 397) | static void free_resource_tree( struct res_tree *tree )
  function output_string (line 407) | static void output_string( const WCHAR *name )
  function output_res_dir (line 418) | static inline void output_res_dir( unsigned int nb_names, unsigned int n...
  function output_resources (line 428) | void output_resources( DLLSPEC *spec )
  function output_bin_string (line 506) | static void output_bin_string( const WCHAR *name )
  function output_bin_res_dir (line 514) | static inline void output_bin_res_dir( unsigned int nb_names, unsigned i...
  function output_bin_resources (line 525) | void output_bin_resources( DLLSPEC *spec, unsigned int start_rva )
  function get_resource_header_size (line 608) | static unsigned int get_resource_header_size( const struct resource *res )
  function output_res_o_file (line 622) | void output_res_o_file( DLLSPEC *spec )

FILE: convspec/spec16.c
  type arg_types (line 37) | enum arg_types
  function is_function (line 59) | static inline int is_function( const ORDDEF *odp )
  function output_entries (line 100) | static void output_entries( DLLSPEC *spec, int first, int count )
  function output_entry_table (line 133) | static void output_entry_table( DLLSPEC *spec )
  function output_resident_name (line 206) | static void output_resident_name( const char *string, int ordinal )
  function get_function_argsize (line 275) | static int get_function_argsize( const ORDDEF *odp )
  function output_call16_function (line 334) | static void output_call16_function( ORDDEF *odp )
  function callfrom16_type_compare (line 459) | static int callfrom16_type_compare( const void *e1, const void *e2 )
  function relay_type_compare (line 488) | static int relay_type_compare( const void *e1, const void *e2 )
  function sort_func_list (line 504) | static int sort_func_list( ORDDEF **list, int count,
  function output_module16 (line 525) | static void output_module16( DLLSPEC *spec )
  function output_spec16_file (line 834) | void output_spec16_file( DLLSPEC *spec16 )
  function output_fake_module16 (line 871) | void output_fake_module16( DLLSPEC *spec )

FILE: convspec/spec32.c
  function needs_relay (line 52) | static inline int needs_relay( const ORDDEF *odp )
  function is_float_arg (line 74) | static int is_float_arg( const ORDDEF *odp, int arg )
  function has_relays (line 81) | static int has_relays( DLLSPEC *spec )
  function cmp_func_args (line 97) | static int cmp_func_args( const void *p1, const void *p2 )
  function get_arg_string (line 105) | static void get_arg_string( ORDDEF *odp, char str[MAX_ARGUMENTS + 1] )
  function output_relay_debug (line 184) | static void output_relay_debug( DLLSPEC *spec )
  function output_exports (line 349) | void output_exports( DLLSPEC *spec )
  function output_asm_constructor (line 494) | static void output_asm_constructor( const char *constructor )
  function output_module (line 531) | void output_module( DLLSPEC *spec )
  function BuildSpec32File (line 688) | void BuildSpec32File( DLLSPEC *spec )
  function output_fake_module (line 708) | void output_fake_module( DLLSPEC *spec )
  function output_def_file (line 909) | void output_def_file( DLLSPEC *spec, int include_private )

FILE: convspec/utils.c
  type strarray (line 48) | struct strarray
  type strarray (line 49) | struct strarray
  type target_cpu (line 54) | enum target_cpu
  function cleanup_tmp_files (line 74) | void cleanup_tmp_files(void)
  function strendswith (line 123) | int strendswith(const char* str, const char* end)
  function strarray_copy (line 149) | static struct strarray strarray_copy( struct strarray src )
  function strarray_add_one (line 159) | static void strarray_add_one( struct strarray *array, const char *str )
  function strarray_add (line 170) | void strarray_add( struct strarray *array, ... )
  function strarray_addv (line 180) | void strarray_addv( struct strarray *array, char * const *argv )
  function strarray_addall (line 185) | void strarray_addall( struct strarray *array, struct strarray args )
  function strarray_fromstring (line 192) | struct strarray strarray_fromstring( const char *str, const char *delim )
  function fatal_error (line 205) | void fatal_error( const char *msg, ... )
  function fatal_perror (line 222) | void fatal_perror( const char *msg, ... )
  function error (line 239) | void error( const char *msg, ... )
  function warning (line 255) | void warning( const char *msg, ... )
  function output (line 273) | int output( const char *format, ... )
  function spawn (line 285) | void spawn( struct strarray args )
  function find_tool (line 304) | struct strarray find_tool( const char *name, const char * const *names )
  function get_as_command (line 378) | struct strarray get_as_command(void)
  function get_ld_command (line 426) | struct strarray get_ld_command(void)
  function check_output_buffer_space (line 523) | static void check_output_buffer_space( size_t size )
  function init_input_buffer (line 532) | void init_input_buffer( const char *file )
  function init_output_buffer (line 555) | void init_output_buffer(void)
  function flush_output_buffer (line 562) | void flush_output_buffer(void)
  function get_byte (line 569) | unsigned char get_byte(void)
  function get_word (line 576) | unsigned short get_word(void)
  function get_dword (line 588) | unsigned int get_dword(void)
  function put_data (line 601) | void put_data( const void *data, size_t size )
  function put_byte (line 608) | void put_byte( unsigned char val )
  function put_word (line 614) | void put_word( unsigned short val )
  function put_dword (line 620) | void put_dword( unsigned int val )
  function put_qword (line 627) | void put_qword( unsigned int val )
  function put_pword (line 642) | void put_pword( unsigned int val )
  function align_output (line 648) | void align_output( unsigned int align )
  function output_standard_file_header (line 659) | void output_standard_file_header(void)
  function dump_bytes (line 669) | void dump_bytes( const void *buffer, unsigned int size )
  function FILE (line 690) | FILE *open_input_file( const char *srcdir, const char *name )
  function close_input_file (line 714) | void close_input_file( FILE *file )
  function remove_stdcall_decoration (line 729) | int remove_stdcall_decoration( char *name )
  function assemble_file (line 746) | void assemble_file( const char *src_file, const char *obj_file )
  function DLLSPEC (line 759) | DLLSPEC *alloc_dll_spec(void)
  function free_dll_spec (line 785) | void free_dll_spec( DLLSPEC *spec )
  function get_cpu_from_name (line 851) | int get_cpu_from_name( const char *name )
  function get_alignment (line 884) | unsigned int get_alignment(unsigned int align)
  function get_page_size (line 909) | unsigned int get_page_size(void)
  function get_ptr_size (line 927) | unsigned int get_ptr_size(void)
  function get_args_size (line 945) | unsigned int get_args_size( const ORDDEF *odp )
  function get_function_argsize16 (line 972) | static int get_function_argsize16(const ORDDEF *odp)
  function output_function_size (line 1097) | void output_function_size( const char *name )
  function output_cfi (line 1111) | void output_cfi( const char *format, ... )
  function output_gnu_stack_note (line 1124) | void output_gnu_stack_note(void)

FILE: ctl3dv2/ctl3d.c
  type autosubclass (line 52) | struct autosubclass
  function BOOL (line 68) | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID lpvReserved)
  function ctl3d_static (line 105) | static void ctl3d_static(DWORD type, DWORD *style, DWORD *exstyle)
  function LRESULT (line 154) | static LRESULT CALLBACK subclassproc(INT code, WPARAM wp, LPARAM lp)
  function BOOL16 (line 186) | BOOL16 WINAPI Ctl3dAutoSubclassEx16(HINSTANCE16 hInst, DWORD type)
  function BOOL16 (line 202) | BOOL16 WINAPI Ctl3dAutoSubclass16(HINSTANCE16 hInst)
  function BOOL16 (line 211) | BOOL16 WINAPI Ctl3dColorChange16(void)
  function HBRUSH (line 219) | HBRUSH WINAPI Ctl3dCtlColor16(HDC16 hdc, LONG hwnd)
  function HBRUSH (line 227) | HBRUSH WINAPI Ctl3dCtlColorEx16(UINT16 msg, WPARAM16 wParam, LPARAM lParam)
  function LRESULT (line 235) | LRESULT WINAPI Ctl3dDlgFramePaint16(HWND16 hwnd, UINT16 msg, WPARAM16 wP...
  function BOOL16 (line 243) | BOOL16 WINAPI Ctl3dEnabled16(void)
  function WORD (line 251) | WORD WINAPI Ctl3dGetVer16(void)
  function BOOL16 (line 259) | BOOL16 WINAPI Ctl3dIsAutoSubclass16(void)
  function BOOL16 (line 267) | BOOL16 WINAPI Ctl3dRegister16(HINSTANCE16 hInst)
  function BOOL16 (line 276) | BOOL16 WINAPI Ctl3dSubclassCtlEx16(HWND16 hwnd, INT16 type)
  function BOOL16 (line 300) | BOOL16 WINAPI Ctl3dSubclassCtl16(HWND16 hwnd)
  type ctl3d_enumproc (line 305) | struct ctl3d_enumproc
  function BOOL (line 310) | BOOL CALLBACK ctl3d_enumproc(HWND hwnd, LPARAM lparam)
  function BOOL16 (line 320) | BOOL16 WINAPI Ctl3dSubclassDlgEx16(HWND16 hwnd, DWORD types)
  function BOOL16 (line 332) | BOOL16 WINAPI Ctl3dSubclassDlg16(HWND16 hwnd, WORD types)
  function BOOL16 (line 340) | BOOL16 WINAPI Ctl3dUnAutoSubclass16(void)
  function BOOL16 (line 355) | BOOL16 WINAPI Ctl3dUnregister16(HINSTANCE16 hInst)
  function BOOL16 (line 364) | BOOL16 WINAPI Ctl3dUnsubclassCtl16(HWND16 hwnd)
  function Ctl3dWinIniChange16 (line 372) | void WINAPI Ctl3dWinIniChange16(void)
  function LRESULT (line 379) | LRESULT WINAPI ComboWndProc3d16(HWND16 hwnd, UINT16 msg,WPARAM16 wparam,...
  function LRESULT (line 387) | LRESULT WINAPI BtnWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, ...
  function LRESULT (line 395) | LRESULT WINAPI StaticWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wpara...
  function LRESULT (line 403) | LRESULT WINAPI EditWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam,...
  function LRESULT (line 411) | LRESULT WINAPI ListWndProc3d16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam,...
  function LRESULT (line 419) | LRESULT WINAPI Ctl3dDlgProc16(HWND16 hwnd, UINT16 msg, WPARAM16 wparam, ...
  function WORD (line 424) | WORD WINAPI Ctl3dSetStyle16(WORD a1, SEGPTR a2, WORD a3)

FILE: ddeml/ddeml.c
  type UINT16 (line 43) | typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ,H...
  type CONVCONTEXT16 (line 46) | typedef struct
  type CONVINFO16 (line 56) | typedef struct
  function map1632_conv_context (line 74) | static void map1632_conv_context(CONVCONTEXT* cc32, const CONVCONTEXT16*...
  function map3216_conv_context (line 84) | static void map3216_conv_context(CONVCONTEXT16* cc16, const CONVCONTEXT*...
  function HDDEDATA (line 99) | static HDDEDATA	CALLBACK WDML_InvokeCallback16(DWORD pfn16, UINT uType, ...
  type ddeml_thunk (line 159) | struct ddeml_thunk
  type ddeml_thunk (line 180) | struct ddeml_thunk
  type ddeml_thunk (line 182) | struct ddeml_thunk
  function init_hsz (line 217) | static void init_hsz()
  function HSZ (line 228) | static HSZ service16_32(HSZ hsz)
  function HSZ (line 236) | static HSZ service32_16(HSZ hsz)
  function HSZ (line 244) | static HSZ topic16_32(HSZ hsz)
  function HSZ (line 252) | static HSZ topic32_16(HSZ hsz)
  function UINT16 (line 263) | UINT16 WINAPI DdeInitialize16(LPDWORD pidInst, PFNCALLBACK16 pfnCallback,
  function BOOL16 (line 291) | BOOL16 WINAPI DdeUninitialize16(DWORD idInst)
  function HCONVLIST (line 316) | HCONVLIST WINAPI DdeConnectList16(DWORD idInst, HSZ hszService, HSZ hszT...
  function HCONV (line 330) | HCONV WINAPI DdeQueryNextServer16(HCONVLIST hConvList, HCONV hConvPrev)
  function BOOL16 (line 338) | BOOL16 WINAPI DdeDisconnectList16(HCONVLIST hConvList)
  function DWORD (line 347) | DWORD WINAPI DdeQueryString16(DWORD idInst, HSZ hsz, LPSTR lpsz, DWORD c...
  function HCONV (line 367) | HCONV WINAPI DdeConnect16(DWORD idInst, HSZ hszService, HSZ hszTopic,
  function BOOL16 (line 385) | BOOL16 WINAPI DdeDisconnect16(HCONV hConv)
  function BOOL16 (line 393) | BOOL16 WINAPI DdeSetUserHandle16(HCONV hConv, DWORD id, DWORD hUser)
  function HDDEDATA (line 401) | HDDEDATA WINAPI DdeCreateDataHandle16(DWORD idInst, LPBYTE pSrc, DWORD cb,
  function HSZ (line 411) | HSZ WINAPI DdeCreateStringHandle16(DWORD idInst, LPCSTR str, INT16 codep...
  function BOOL16 (line 432) | BOOL16 WINAPI DdeFreeStringHandle16(DWORD idInst, HSZ hsz)
  function BOOL16 (line 440) | BOOL16 WINAPI DdeFreeDataHandle16(HDDEDATA hData)
  function BOOL16 (line 448) | BOOL16 WINAPI DdeKeepStringHandle16(DWORD idInst, HSZ hsz)
  function HDDEDATA (line 456) | HDDEDATA WINAPI DdeClientTransaction16(LPVOID pData, DWORD cbData, HCONV...
  function BOOL16 (line 480) | BOOL16 WINAPI DdeAbandonTransaction16(DWORD idInst, HCONV hConv, DWORD i...
  function BOOL16 (line 488) | BOOL16 WINAPI DdePostAdvise16(DWORD idInst, HSZ hszTopic, HSZ hszItem)
  function HDDEDATA (line 496) | HDDEDATA WINAPI DdeAddData16(HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWOR...
  function DWORD (line 504) | DWORD WINAPI DdeGetData16(HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWOR...
  function LPBYTE (line 512) | LPBYTE WINAPI DdeAccessData16(HDDEDATA hData, LPDWORD pcbDataSize)
  function BOOL16 (line 522) | BOOL16 WINAPI DdeUnaccessData16(HDDEDATA hData)
  function BOOL16 (line 530) | BOOL16 WINAPI DdeEnableCallback16(DWORD idInst, HCONV hConv, UINT16 wCmd)
  function HDDEDATA (line 538) | HDDEDATA WINAPI DdeNameService16(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT1...
  function UINT16 (line 546) | UINT16 WINAPI DdeGetLastError16(DWORD idInst)
  function INT16 (line 554) | INT16 WINAPI DdeCmpStringHandles16(HSZ hsz1, HSZ hsz2)
  function UINT16 (line 563) | UINT16 WINAPI DdeQueryConvInfo16(HCONV hConv, DWORD idTransaction,

FILE: dispdib/dispdib.c
  function draw (line 49) | static void draw()
  function LRESULT (line 85) | static LRESULT CALLBACK ddwndproc(HWND hwnd, UINT uMsg, WPARAM wParam, L...
  function retrace_cb (line 129) | static void CALLBACK retrace_cb(LPVOID arg, DWORD low, DWORD high)
  function DWORD (line 141) | static DWORD CALLBACK retrace_th(LPVOID arg)
  function start_retrace_timer (line 153) | static void start_retrace_timer()
  function ddInt10Handler (line 162) | static void WINAPI ddInt10Handler(CONTEXT *context)
  function DWORD (line 208) | static DWORD WINAPI ddVGAinHandler(int port, int size)
  function ddVGAoutHandler (line 233) | static void WINAPI ddVGAoutHandler(int port, int size, DWORD value)
  function WORD (line 309) | WORD WINAPI DisplayDib(

FILE: display/display.c
  type CURSORINFO16 (line 31) | typedef struct tagCURSORINFO16
  function WORD (line 41) | WORD WINAPI Inquire16(LPCURSORINFO16 lpCursorInfo)
  function VOID (line 52) | VOID WINAPI DISPLAY_SetCursor( struct tagCURSORICONINFO *lpCursor )
  function VOID (line 60) | VOID WINAPI MoveCursor16( WORD wAbsX, WORD wAbsY )
  function VOID (line 68) | VOID WINAPI CheckCursor16( void )
  function DWORD (line 81) | DWORD WINAPI GetDriverResourceID16( WORD wQueriedResID, LPSTR lpsResName )
  function VOID (line 92) | VOID WINAPI UserRepaintDisable16( BOOL16 disable )
  function WORD (line 97) | WORD WINAPI SetPaletteTranslate16( WORD wNumEntries, LPBYTE lpTranslate)

FILE: gdi/bidi.c
  function LONG (line 34) | LONG WINAPI RawTextOut16(HDC16 hdc, INT16 x, INT16 y, LPCSTR str, INT16 ...
  function LONG (line 43) | LONG WINAPI RawExtTextOut16( HDC16 hdc, INT16 x, INT16 y, UINT16 flags,
  function LONG (line 55) | LONG WINAPI RawGetTextExtent16(HDC16 hdc, LPCSTR lpszString, INT16 cbStr...
  function LONG (line 64) | LONG WINAPI RawGetTextExtentEx16(void)
  function LONG (line 73) | LONG WINAPI BiDiLayout16(void) { FIXME("stub (no prototype)\n"); return ...
  function LONG (line 78) | LONG WINAPI BiDiCreateTabString16(void) { FIXME("stub (no prototype)\n")...
  function LONG (line 83) | LONG WINAPI BiDiCreateString16(void) { FIXME("stub (no prototype)\n"); r...
  function LONG (line 88) | LONG WINAPI BiDiStringOut16(void) { FIXME("stub (no prototype)\n"); retu...
  function LONG (line 93) | LONG WINAPI BiDiGlyphOut16(WORD a1, WORD a2, WORD a3, WORD a4, LPCSTR a5...
  function LONG (line 102) | LONG WINAPI BiDiJustifyString16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 107) | LONG WINAPI BiDiSetStringTabs16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 112) | LONG WINAPI BiDiGetStringExtent16(void) { FIXME("stub (no prototype)\n")...
  function LONG (line 117) | LONG WINAPI BiDiGetNextGlyph16(void) { FIXME("stub (no prototype)\n"); r...
  function LONG (line 122) | LONG WINAPI BiDiGetPrevGlyph16(void) { FIXME("stub (no prototype)\n"); r...
  function LONG (line 127) | LONG WINAPI BiDiIsStringRTL16(void) { FIXME("stub (no prototype)\n"); re...
  function LONG (line 132) | LONG WINAPI BiDiGlyphLength16(void) { FIXME("stub (no prototype)\n"); re...
  function LONG (line 137) | LONG WINAPI BiDiCaretStringTopel16(void) { FIXME("stub (no prototype)\n"...
  function LONG (line 142) | LONG WINAPI BiDiCaretPelToString16(void) { FIXME("stub (no prototype)\n"...
  function LONG (line 147) | LONG WINAPI BiDiStringToGlyph16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 152) | LONG WINAPI BiDiGlyphToString16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 157) | LONG WINAPI BiDiPelToGlyph16(void) { FIXME("stub (no prototype)\n"); ret...
  function LONG (line 162) | LONG WINAPI BiDiGlyphToPel16(void) { FIXME("stub (no prototype)\n"); ret...
  function LONG (line 167) | LONG WINAPI BiDiBounds16(void) { FIXME("stub (no prototype)\n"); return ...
  function LONG (line 172) | LONG WINAPI BiDiDeleteString16(WORD a1)
  function LONG (line 181) | LONG WINAPI BiDiSetDefaults16(void) { FIXME("stub (no prototype)\n"); re...
  function LONG (line 186) | LONG WINAPI BiDiGetDefaults16(void) { FIXME("stub (no prototype)\n"); re...
  function LONG (line 191) | LONG WINAPI BiDiCalcString16(WORD a1, WORD a2, LPCSTR a3, WORD a4, WORD ...
  function LONG (line 200) | LONG WINAPI BiDiShape16(WORD a1, WORD a2, WORD a3, WORD a4, WORD a5, WOR...
  function LONG (line 211) | LONG WINAPI BiDiFontComplement16(void) { FIXME("stub (no prototype)\n");...
  function LONG (line 216) | LONG WINAPI BiDiCalcTabString16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 221) | LONG WINAPI BiDiSetKashida16(void) { FIXME("stub (no prototype)\n"); ret...
  function LONG (line 226) | LONG WINAPI BiDiKExtTextOut16(void) { FIXME("stub (no prototype)\n"); re...
  function LONG (line 231) | LONG WINAPI BiDiShapeEx16(void) { FIXME("stub (no prototype)\n"); return...
  function LONG (line 236) | LONG WINAPI BiDiCreateStringEx16(WORD a1, WORD a2, WORD a3, LPVOID a4, W...
  function LONG (line 245) | LONG WINAPI GetUnicodeMap16(void) { FIXME("stub (no prototype)\n"); retu...
  function LONG (line 250) | LONG WINAPI GetTextExtentRtoL16(void) { FIXME("stub (no prototype)\n"); ...
  function LONG (line 255) | LONG WINAPI GetHDCCharSet16(HDC16 a1)
  function LONG (line 264) | LONG WINAPI BiDiLayoutEx16(LPVOID a1, WORD a2, WORD a3, WORD a4, LPVOID ...
  function LONG (line 273) | LONG WINAPI BiDiCreateTabStringEx16(void) { FIXME("stub (no prototype)\n...
  function LONG (line 278) | LONG WINAPI BiDiCalcTabStringEx16(void) { FIXME("stub (no prototype)\n")...
  function LONG (line 283) | LONG WINAPI BiDiCalcStringEx16(void) { FIXME("stub (no prototype)\n"); r...
  function LONG (line 288) | LONG WINAPI SetTextCodePage16(WORD a1, WORD a2)
  function LONG (line 297) | LONG WINAPI GetTextCodePage16()

FILE: gdi/env.c
  type ENVTABLE (line 38) | typedef struct {
  function ENVTABLE (line 45) | static ENVTABLE *SearchEnvTable(ATOM atom)
  function ATOM (line 56) | static ATOM GDI_GetNullPortAtom(void)
  function ATOM (line 70) | static ATOM PortNameToAtom(LPCSTR lpPortName, BOOL16 add)
  function INT16 (line 88) | INT16 WINAPI GetEnvironment16(LPCSTR lpPortName, LPDEVMODEA lpdev, UINT1...
  function INT16 (line 117) | INT16 WINAPI SetEnvironment16(LPCSTR lpPortName, LPDEVMODEA lpdev, UINT1...

FILE: gdi/gdi.c
  type saved_visrgn (line 59) | struct saved_visrgn
  type list (line 66) | struct list
  type dib_driver (line 75) | struct dib_driver
  type list (line 86) | struct list
  function COLORREF (line 103) | static COLORREF check_colorref(COLORREF color)
  function COLORREF (line 113) | static COLORREF convert_colorref(COLORREF color)
  function set_dib_colors (line 131) | static void set_dib_colors(HDC hdc)
  function set_dib_colors_for_screen (line 151) | static void set_dib_colors_for_screen(HDC hdc)
  function BOOL (line 180) | static BOOL is_blank_palette(HPALETTE hpal)
  type gdi_thunk (line 199) | struct gdi_thunk
  function BOOL (line 215) | static BOOL CALLBACK GDI_Callback3216( DWORD pfn16, HDC hdc, INT code )
  type gdi_thunk (line 235) | struct gdi_thunk
  type gdi_thunk (line 237) | struct gdi_thunk
  function GDI_DeleteThunk (line 273) | static void    GDI_DeleteThunk(struct gdi_thunk* thunk)
  type gdi_thunk (line 281) | struct gdi_thunk
  type gdi_thunk (line 283) | struct gdi_thunk
  function BOOL16 (line 302) | BOOL16 WINAPI QueryAbort16(HDC16 hdc16, INT16 reserved)
  function INT16 (line 317) | INT16 WINAPI SetAbortProc16(HDC16 hdc16, ABORTPROC16 abrtprc)
  type callback16_info (line 335) | struct callback16_info
  function linedda_callback (line 343) | static void CALLBACK linedda_callback( INT x, INT y, LPARAM param )
  function INT (line 356) | static INT CALLBACK enum_pens_callback( void *ptr, LPARAM param )
  function INT (line 380) | static INT CALLBACK enum_brushes_callback( void *ptr, LPARAM param )
  function BYTE (line 402) | static BYTE fix_font_quality(LOGFONT16 *font16)
  function logfont_16_to_A (line 425) | static void logfont_16_to_A( const LOGFONT16 *font16, LPLOGFONTA font32 )
  function logfont_A_to_16 (line 445) | static void logfont_A_to_16( const LOGFONTA* font32, LPLOGFONT16 font16 )
  function enumlogfontex_A_to_16 (line 465) | static void enumlogfontex_A_to_16( const ENUMLOGFONTEXA *fontA,
  function newtextmetricex_A_to_16 (line 479) | static void newtextmetricex_A_to_16( const NEWTEXTMETRICEXA *ptmA,
  type list (line 580) | struct list
  type list (line 582) | struct list
  type font_entry (line 584) | struct font_entry
  function construct_allowed_font_list (line 590) | static void construct_allowed_font_list()
  function INT (line 631) | static INT CALLBACK enum_font_callback( const LOGFONTA *plf,
  type dib_segptr_bits (line 717) | struct dib_segptr_bits
  type list (line 725) | struct list
  function SEGPTR (line 727) | static SEGPTR alloc_segptr_bits( HBITMAP bmp, void *bits32 )
  function free_segptr_bits (line 754) | static void free_segptr_bits( HBITMAP16 bmp )
  type dib_window_surface (line 774) | struct dib_window_surface
  type dib_window_surface (line 783) | struct dib_window_surface
  type window_surface (line 783) | struct window_surface
  type dib_window_surface (line 785) | struct dib_window_surface
  function dib_surface_lock (line 791) | static void dib_surface_lock( struct window_surface *window_surface )
  function dib_surface_unlock (line 799) | static void dib_surface_unlock( struct window_surface *window_surface )
  type window_surface (line 807) | struct window_surface
  type dib_window_surface (line 809) | struct dib_window_surface
  function RECT (line 818) | static RECT *dib_surface_get_bounds( struct window_surface *window_surfa...
  function dib_surface_set_region (line 828) | static void dib_surface_set_region( struct window_surface *window_surfac...
  function dib_surface_flush (line 836) | static void dib_surface_flush( struct window_surface *window_surface )
  function dib_surface_destroy (line 844) | static void dib_surface_destroy( struct window_surface *window_surface )
  type window_surface_funcs (line 852) | struct window_surface_funcs
  type window_surface (line 866) | struct window_surface
  type dib_window_surface (line 868) | struct dib_window_surface
  type dib_window_surface (line 877) | struct dib_window_surface
  function COLORREF (line 900) | COLORREF WINAPI SetBkColor16( HDC16 hdc, COLORREF color )
  function INT16 (line 909) | INT16 WINAPI SetBkMode16( HDC16 hdc, INT16 mode )
  function INT16 (line 918) | INT16 WINAPI SetMapMode16( HDC16 hdc, INT16 mode )
  function INT16 (line 927) | INT16 WINAPI SetROP216( HDC16 hdc, INT16 mode )
  function INT16 (line 939) | INT16 WINAPI SetRelAbs16( HDC16 hdc, INT16 mode )
  function INT16 (line 948) | INT16 WINAPI SetPolyFillMode16( HDC16 hdc, INT16 mode )
  function INT16 (line 957) | INT16 WINAPI SetStretchBltMode16( HDC16 hdc, INT16 mode )
  function INT16 (line 966) | INT16 WINAPI SetTextCharacterExtra16( HDC16 hdc, INT16 extra )
  function COLORREF (line 975) | COLORREF WINAPI SetTextColor16( HDC16 hdc, COLORREF color )
  function INT16 (line 984) | INT16 WINAPI SetTextJustification16( HDC16 hdc, INT16 extra, INT16 breaks )
  function DWORD (line 993) | DWORD WINAPI SetWindowOrg16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1004) | DWORD WINAPI SetWindowExt16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1015) | DWORD WINAPI SetViewportOrg16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1026) | DWORD WINAPI SetViewportExt16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1037) | DWORD WINAPI OffsetWindowOrg16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1048) | DWORD WINAPI ScaleWindowExt16( HDC16 hdc, INT16 xNum, INT16 xDenom,
  function DWORD (line 1061) | DWORD WINAPI OffsetViewportOrg16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1072) | DWORD WINAPI ScaleViewportExt16( HDC16 hdc, INT16 xNum, INT16 xDenom,
  function BOOL16 (line 1085) | BOOL16 WINAPI LineTo16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 1094) | DWORD WINAPI MoveTo16( HDC16 hdc, INT16 x, INT16 y )
  function INT16 (line 1106) | INT16 WINAPI ExcludeClipRect16( HDC16 hdc, INT16 left, INT16 top,
  function INT16 (line 1116) | INT16 WINAPI IntersectClipRect16( HDC16 hdc, INT16 left, INT16 top,
  function BOOL16 (line 1126) | BOOL16 WINAPI Arc16( HDC16 hdc, INT16 left, INT16 top, INT16 right,
  function BOOL16 (line 1137) | BOOL16 WINAPI Ellipse16( HDC16 hdc, INT16 left, INT16 top,
  function BOOL16 (line 1147) | BOOL16 WINAPI FloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color )
  function BOOL16 (line 1156) | BOOL16 WINAPI Pie16( HDC16 hdc, INT16 left, INT16 top,
  function BOOL16 (line 1167) | BOOL16 WINAPI Rectangle16( HDC16 hdc, INT16 left, INT16 top,
  function BOOL16 (line 1177) | BOOL16 WINAPI RoundRect16( HDC16 hdc, INT16 left, INT16 top, INT16 right,
  function BOOL16 (line 1187) | BOOL16 WINAPI PatBlt16( HDC16 hdc, INT16 left, INT16 top,
  function INT16 (line 1197) | INT16 WINAPI SaveDC16( HDC16 hdc )
  function COLORREF (line 1206) | COLORREF WINAPI SetPixel16( HDC16 hdc, INT16 x, INT16 y, COLORREF color )
  function INT16 (line 1215) | INT16 WINAPI OffsetClipRgn16( HDC16 hdc, INT16 x, INT16 y )
  function BOOL16 (line 1224) | BOOL16 WINAPI TextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR str, INT16 ...
  function BOOL16 (line 1234) | BOOL16 WINAPI BitBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst, INT16 width,
  function BOOL16 (line 1245) | BOOL16 WINAPI StretchBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst,
  function BOOL16 (line 1320) | BOOL16 WINAPI Polygon16( HDC16 hdc, const POINT16* pt, INT16 count )
  function BOOL16 (line 1341) | BOOL16 WINAPI Polyline16( HDC16 hdc, const POINT16* pt, INT16 count )
  function INT16 (line 1362) | INT16 WINAPI Escape16( HDC16 hdc, INT16 escape, INT16 in_count, SEGPTR i...
  function BOOL16 (line 1589) | BOOL16 WINAPI RestoreDC16( HDC16 hdc, INT16 level )
  function BOOL16 (line 1598) | BOOL16 WINAPI FillRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush )
  function BOOL16 (line 1607) | BOOL16 WINAPI FrameRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush,
  function BOOL16 (line 1617) | BOOL16 WINAPI InvertRgn16( HDC16 hdc, HRGN16 hrgn )
  function BOOL16 (line 1626) | BOOL16 WINAPI PaintRgn16( HDC16 hdc, HRGN16 hrgn )
  function INT16 (line 1635) | INT16 WINAPI SelectClipRgn16( HDC16 hdc, HRGN16 hrgn )
  function HGDIOBJ16 (line 1644) | HGDIOBJ16 WINAPI SelectObject16( HDC16 hdc, HGDIOBJ16 handle )
  function INT16 (line 1664) | INT16 WINAPI CombineRgn16(HRGN16 hDest, HRGN16 hSrc1, HRGN16 hSrc2, INT1...
  function HBITMAP16 (line 1673) | HBITMAP16 WINAPI CreateBitmap16( INT16 width, INT16 height, UINT16 planes,
  function HBITMAP16 (line 1740) | HBITMAP16 WINAPI CreateBitmapIndirect16( const BITMAP16 * bmp )
  function HBRUSH16 (line 1750) | HBRUSH16 WINAPI CreateBrushIndirect16( const LOGBRUSH16 * brush )
  function HBITMAP16 (line 1775) | HBITMAP16 WINAPI CreateCompatibleBitmap16( HDC16 hdc, INT16 width, INT16...
  function HDC16 (line 1805) | HDC16 WINAPI CreateCompatibleDC16( HDC16 hdc )
  function add_dib_driver_entry (line 1816) | void add_dib_driver_entry(HBITMAP bitmap, HDC dc, HANDLE hSection, LPVOI...
  type dib_driver (line 1828) | struct dib_driver
  type dib_driver (line 1830) | struct dib_driver
  function HDC16 (line 1854) | HDC16 WINAPI CreateDC16( LPCSTR driver, LPCSTR device, LPCSTR output,
  function HRGN16 (line 1994) | HRGN16 WINAPI CreateEllipticRgn16( INT16 left, INT16 top, INT16 right, I...
  function HRGN16 (line 2003) | HRGN16 WINAPI CreateEllipticRgnIndirect16( const RECT16 *rect )
  function BYTE (line 2009) | static BYTE fix_font_charset(BYTE charset)
  function HFONT16 (line 2025) | HFONT16 WINAPI CreateFontIndirect16( const LOGFONT16 *plf16 )
  function HFONT16 (line 2046) | HFONT16 WINAPI CreateFont16(INT16 height, INT16 width, INT16 esc, INT16 ...
  function HBRUSH16 (line 2074) | HBRUSH16 WINAPI CreateHatchBrush16( INT16 style, COLORREF color )
  function HBRUSH16 (line 2083) | HBRUSH16 WINAPI CreatePatternBrush16( HBITMAP16 hbitmap )
  function HPEN16 (line 2092) | HPEN16 WINAPI CreatePen16( INT16 style, INT16 width, COLORREF color )
  function HPEN16 (line 2110) | HPEN16 WINAPI CreatePenIndirect16( const LOGPEN16 * pen )
  function HRGN16 (line 2129) | HRGN16 WINAPI CreatePolygonRgn16( const POINT16 * points, INT16 count, I...
  function HRGN16 (line 2140) | HRGN16 WINAPI CreateRectRgn16( INT16 left, INT16 top, INT16 right, INT16...
  function HRGN16 (line 2153) | HRGN16 WINAPI CreateRectRgnIndirect16( const RECT16* rect )
  function HBRUSH16 (line 2162) | HBRUSH16 WINAPI CreateSolidBrush16( COLORREF color )
  function delete_dib_driver (line 2168) | void delete_dib_driver(HDC hdc)
  function BOOL16 (line 2185) | BOOL16 WINAPI DeleteDC16( HDC16 hdc )
  function BOOL16 (line 2218) | BOOL16 WINAPI DeleteObject16( HGDIOBJ16 obj )
  function INT16 (line 2263) | INT16 WINAPI EnumFonts16( HDC16 hDC, LPCSTR lpName, FONTENUMPROC16 efproc,
  function INT16 (line 2279) | INT16 WINAPI EnumObjects16( HDC16 hdc, INT16 obj, GOBJENUMPROC16 proc, L...
  function BOOL16 (line 2299) | BOOL16 WINAPI EqualRgn16( HRGN16 rgn1, HRGN16 rgn2 )
  function LONG (line 2308) | LONG WINAPI GetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPVOID buffer )
  function COLORREF (line 2317) | COLORREF WINAPI GetBkColor16( HDC16 hdc )
  function INT16 (line 2326) | INT16 WINAPI GetBkMode16( HDC16 hdc )
  function INT16 (line 2335) | INT16 WINAPI GetClipBox16( HDC16 hdc, LPRECT16 rect )
  function DWORD (line 2354) | DWORD WINAPI GetCurrentPosition16( HDC16 hdc )
  function DWORD (line 2365) | DWORD WINAPI GetDCOrg16( HDC16 hdc )
  function INT16 (line 2376) | INT16 WINAPI GetDeviceCaps16( HDC16 hdc, INT16 cap )
  function INT16 (line 2440) | INT16 WINAPI GetMapMode16( HDC16 hdc )
  function INT16 (line 2449) | INT16 WINAPI GetObject16( HGDIOBJ16 handle16, INT16 count, LPVOID buffer )
  function COLORREF (line 2539) | COLORREF WINAPI GetPixel16( HDC16 hdc, INT16 x, INT16 y )
  function INT16 (line 2548) | INT16 WINAPI GetPolyFillMode16( HDC16 hdc )
  function INT16 (line 2557) | INT16 WINAPI GetROP216( HDC16 hdc )
  function INT16 (line 2568) | INT16 WINAPI GetRelAbs16( HDC16 hdc )
  function HGDIOBJ16 (line 2577) | HGDIOBJ16 WINAPI GetStockObject16( INT16 obj )
  function INT16 (line 2591) | INT16 WINAPI GetStretchBltMode16( HDC16 hdc )
  function INT16 (line 2600) | INT16 WINAPI GetTextCharacterExtra16( HDC16 hdc )
  function COLORREF (line 2609) | COLORREF WINAPI GetTextColor16( HDC16 hdc )
  function check_font_rotation (line 2619) | static void check_font_rotation(HDC hdc, SIZE16 *box)
  function DWORD (line 2647) | DWORD WINAPI GetTextExtent16( HDC16 hdc, LPCSTR str, INT16 count )
  function INT16 (line 2674) | INT16 WINAPI GetTextFace16( HDC16 hdc, INT16 count, LPSTR name )
  function BOOL16 (line 2683) | BOOL16 WINAPI GetTextMetrics16( HDC16 hdc, TEXTMETRIC16 *tm )
  function DWORD (line 2718) | DWORD WINAPI GetViewportExt16( HDC16 hdc )
  function DWORD (line 2729) | DWORD WINAPI GetViewportOrg16( HDC16 hdc )
  function DWORD (line 2740) | DWORD WINAPI GetWindowExt16( HDC16 hdc )
  function DWORD (line 2751) | DWORD WINAPI GetWindowOrg16( HDC16 hdc )
  function LineDDA16 (line 2764) | void WINAPI LineDDA16( INT16 nXStart, INT16 nYStart, INT16 nXEnd,
  function INT16 (line 2777) | INT16 WINAPI OffsetRgn16( HRGN16 hrgn, INT16 x, INT16 y )
  function BOOL16 (line 2786) | BOOL16 WINAPI PtVisible16( HDC16 hdc, INT16 x, INT16 y )
  function INT16 (line 2795) | INT16 WINAPI SelectVisRgn16( HDC16 hdc, HRGN16 hrgn )
  function LONG (line 2805) | LONG WINAPI SetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPCVOID buff...
  type WINFNT (line 2838) | typedef struct
  function INT16 (line 2852) | INT16 WINAPI AddFontResource16( LPCSTR filename )
  function Death16 (line 3020) | void WINAPI Death16(HDC16 hdc)
  function Resurrection16 (line 3031) | void WINAPI Resurrection16(HDC16 hdc,
  function INT16 (line 3042) | INT16 WINAPI MulDiv16( INT16 nMultiplicand, INT16 nMultiplier, INT16 nDi...
  function INT16 (line 3067) | INT16 WINAPI GetRgnBox16( HRGN16 hrgn, LPRECT16 rect )
  function BOOL16 (line 3082) | BOOL16 WINAPI RemoveFontResource16( LPCSTR filename)
  function DWORD (line 3101) | DWORD WINAPI SetBrushOrg16( HDC16 hdc, INT16 x, INT16 y )
  function DWORD (line 3121) | DWORD WINAPI GetBrushOrg16( HDC16 hdc )
  function BOOL16 (line 3138) | BOOL16 WINAPI UnrealizeObject16( HGDIOBJ16 obj )
  function HDC16 (line 3147) | HDC16 WINAPI CreateIC16( LPCSTR driver, LPCSTR device, LPCSTR output,
  function COLORREF (line 3179) | COLORREF WINAPI GetNearestColor16( HDC16 hdc, COLORREF color )
  function HBITMAP16 (line 3188) | HBITMAP16 WINAPI CreateDiscardableBitmap16( HDC16 hdc, INT16 width, INT1...
  function BOOL16 (line 3197) | BOOL16 WINAPI PtInRegion16( HRGN16 hrgn, INT16 x, INT16 y )
  function DWORD (line 3206) | DWORD WINAPI GetBitmapDimension16( HBITMAP16 hbitmap )
  function DWORD (line 3217) | DWORD WINAPI SetBitmapDimension16( HBITMAP16 hbitmap, INT16 x, INT16 y )
  function SetRectRgn16 (line 3230) | void WINAPI SetRectRgn16( HRGN16 hrgn, INT16 left, INT16 top, INT16 righ...
  function PlayMetaFileRecord16 (line 3240) | void WINAPI PlayMetaFileRecord16( HDC16 hdc, HANDLETABLE16 *ht, METARECO...
  function BOOL16 (line 3255) | BOOL16 WINAPI SetDCHook16( HDC16 hdc16, FARPROC16 hookProc, DWORD dwHook...
  function DWORD (line 3265) | DWORD WINAPI GetDCHook16( HDC16 hdc16, FARPROC16 *phookProc )
  function WORD (line 3275) | WORD WINAPI SetHookFlags16( HDC16 hdc, WORD flags )
  function UINT16 (line 3285) | UINT16 WINAPI SetBoundsRect16( HDC16 hdc, const RECT16* rect, UINT16 fla...
  function UINT16 (line 3303) | UINT16 WINAPI GetBoundsRect16( HDC16 hdc, LPRECT16 rect, UINT16 flags)
  function WORD (line 3321) | WORD WINAPI EngineEnumerateFont16(LPSTR fontname, FARPROC16 proc, DWORD ...
  function WORD (line 3331) | WORD WINAPI EngineDeleteFont16(LPFONTINFO16 lpFontInfo)
  function WORD (line 3357) | WORD WINAPI EngineRealizeFont16(LPLOGFONT16 lplogFont, LPTEXTXFORM16 lpt...
  function WORD (line 3368) | WORD WINAPI EngineRealizeFontExt16(LONG l1, LONG l2, LONG l3, LONG l4)
  function WORD (line 3379) | WORD WINAPI EngineGetCharWidth16(LPFONTINFO16 lpFontInfo, BYTE firstChar...
  function WORD (line 3393) | WORD WINAPI EngineSetFontContext16(LPFONTINFO16 lpFontInfo, WORD data)
  function WORD (line 3402) | WORD WINAPI EngineGetGlyphBMP16(WORD word, LPFONTINFO16 lpFontInfo, WORD...
  function DWORD (line 3413) | DWORD WINAPI EngineMakeFontDir16(HDC16 hdc, LPFONTDIR16 fontdir, LPCSTR ...
  function BOOL16 (line 3423) | BOOL16 WINAPI GetCharABCWidths16( HDC16 hdc, UINT16 firstChar, UINT16 la...
  function UINT16 (line 3460) | UINT16 WINAPI GetOutlineTextMetrics16( HDC16 hdc, UINT16 cbData,
  function DWORD (line 3552) | DWORD WINAPI GetGlyphOutline16( HDC16 hdc, UINT16 uChar, UINT16 fuFormat,
  function BOOL16 (line 3576) | BOOL16 WINAPI CreateScalableFontResource16( UINT16 fHidden, LPCSTR lpszR...
  function DWORD (line 3587) | DWORD WINAPI GetFontData16( HDC16 hdc, DWORD table, DWORD offset, LPVOID...
  function BOOL16 (line 3596) | BOOL16 WINAPI GetRasterizerCaps16( LPRASTERIZER_STATUS lprs, UINT16 cbNu...
  function INT16 (line 3616) | INT16 WINAPI EnumFontFamilies16( HDC16 hDC, LPCSTR lpFamily,
  function INT16 (line 3632) | INT16 WINAPI GetKerningPairs16( HDC16 hdc, INT16 count, LPKERNINGPAIR16 ...
  function UINT16 (line 3658) | UINT16 WINAPI GetTextAlign16( HDC16 hdc )
  function UINT16 (line 3667) | UINT16 WINAPI SetTextAlign16( HDC16 hdc, UINT16 align )
  function BOOL16 (line 3676) | BOOL16 WINAPI Chord16( HDC16 hdc, INT16 left, INT16 top,
  function DWORD (line 3687) | DWORD WINAPI SetMapperFlags16( HDC16 hdc, DWORD flags )
  function BOOL16 (line 3696) | BOOL16 WINAPI GetCharWidth16( HDC16 hdc, UINT16 firstChar, UINT16 lastCh...
  function BOOL16 (line 3732) | BOOL16 WINAPI ExtTextOut16( HDC16 hdc, INT16 x, INT16 y, UINT16 flags,
  function HPALETTE16 (line 3762) | HPALETTE16 WINAPI CreatePalette16( const LOGPALETTE* palette )
  function HPALETTE16 (line 3771) | HPALETTE16 WINAPI GDISelectPalette16( HDC16 hdc, HPALETTE16 hpalette, WO...
  function UINT16 (line 3782) | UINT16 WINAPI GDIRealizePalette16( HDC16 hdc )
  function UINT16 (line 3795) | UINT16 WINAPI GetPaletteEntries16( HPALETTE16 hpalette, UINT16 start,
  function WINAPI (line 3801) | static WINAPI paint_all_windows(HWND hwnd, LPARAM lparam)
  function BOOL (line 3818) | BOOL update_palette(HPALETTE16 hpalette)
  function UINT16 (line 3871) | UINT16 WINAPI SetPaletteEntries16( HPALETTE16 hpalette, UINT16 start,
  function INT16 (line 3883) | INT16 WINAPI UpdateColors16( HDC16 hdc )
  function AnimatePalette16 (line 3892) | void WINAPI AnimatePalette16( HPALETTE16 hpalette, UINT16 StartIndex,
  function BOOL16 (line 3903) | BOOL16 WINAPI ResizePalette16( HPALETTE16 hpalette, UINT16 cEntries )
  function UINT16 (line 3912) | UINT16 WINAPI GetNearestPaletteIndex16( HPALETTE16 hpalette, COLORREF co...
  function BOOL16 (line 3921) | BOOL16 WINAPI ExtFloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color,
  function UINT16 (line 3931) | UINT16 WINAPI SetSystemPaletteUse16( HDC16 hdc, UINT16 use )
  function UINT16 (line 3941) | UINT16 WINAPI GetSystemPaletteUse16( HDC16 hdc )
  function UINT16 (line 3953) | UINT16 WINAPI GetSystemPaletteEntries16( HDC16 hdc, UINT16 start, UINT16...
  function HDC16 (line 3974) | HDC16 WINAPI ResetDC16( HDC16 hdc, const DEVMODEA *devmode )
  function INT16 (line 3989) | INT16 WINAPI StartDoc16( HDC16 hdc, const DOCINFO16 *lpdoc )
  function INT16 (line 4020) | INT16 WINAPI EndDoc16( HDC16 hdc )
  function INT16 (line 4029) | INT16 WINAPI StartPage16( HDC16 hdc )
  function INT16 (line 4038) | INT16 WINAPI EndPage16( HDC16 hdc )
  function INT16 (line 4047) | INT16 WINAPI AbortDoc16( HDC16 hdc )
  function BOOL16 (line 4056) | BOOL16 WINAPI FastWindowFrame16( HDC16 hdc, const RECT16 *rect,
  function HANDLE16 (line 4083) | HANDLE16 WINAPI GdiInit216( HANDLE16 h1, HANDLE16 h2 )
  function FinalGdiInit16 (line 4094) | void WINAPI FinalGdiInit16( HBRUSH16 hPattern /* [in] fill pattern of de...
  function HBITMAP16 (line 4102) | HBITMAP16 WINAPI CreateUserBitmap16( INT16 width, INT16 height, UINT16 p...
  function HBITMAP16 (line 4112) | HBITMAP16 WINAPI CreateUserDiscardableBitmap16( WORD dummy, INT16 width,...
  function HFONT16 (line 4124) | HFONT16 WINAPI GetCurLogFont16( HDC16 hdc )
  function DWORD (line 4129) | static DWORD rle_size(int type, const VOID *bits)
  function INT16 (line 4173) | INT16 WINAPI StretchDIBits16( HDC16 hdc, INT16 xDst, INT16 yDst, INT16 w...
  function INT16 (line 4224) | INT16 WINAPI SetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan,
  function INT16 (line 4282) | INT16 WINAPI GetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan,
  function HBITMAP16 (line 4297) | HBITMAP16 WINAPI CreateDIBitmap16( HDC16 hdc, const BITMAPINFOHEADER * h...
  function INT16 (line 4336) | INT16 WINAPI SetDIBitsToDevice16( HDC16 hdc, INT16 xDest, INT16 yDest, I...
  function HRGN16 (line 4354) | HRGN16 WINAPI CreateRoundRectRgn16( INT16 left, INT16 top, INT16 right, ...
  function HBRUSH16 (line 4368) | HBRUSH16 WINAPI CreateDIBPatternBrush16( HGLOBAL16 hbitmap, UINT16 color...
  function BOOL16 (line 4383) | BOOL16 WINAPI PolyPolygon16( HDC16 hdc, const POINT16* pt, const INT16* ...
  function HRGN16 (line 4418) | HRGN16 WINAPI CreatePolyPolygonRgn16( const POINT16 *points,
  function DWORD (line 4446) | DWORD WINAPI GdiSeeGdiDo16( WORD wReqType, WORD wParam1, WORD wParam2,
  function SetObjectOwner16 (line 4479) | void WINAPI SetObjectOwner16( HGDIOBJ16 handle, HANDLE16 owner )
  function BOOL16 (line 4490) | BOOL16 WINAPI IsGDIObject16( HGDIOBJ16 handle16 )
  function BOOL16 (line 4522) | BOOL16 WINAPI RectVisible16( HDC16 hdc, const RECT16* rect16 )
  function BOOL16 (line 4538) | BOOL16 WINAPI RectInRegion16( HRGN16 hrgn, const RECT16 *rect )
  function BOOL16 (line 4553) | BOOL16 WINAPI GetBitmapDimensionEx16( HBITMAP16 hbitmap, LPSIZE16 size )
  function BOOL16 (line 4570) | BOOL16 WINAPI GetBrushOrgEx16( HDC16 hdc, LPPOINT16 pt )
  function BOOL16 (line 4583) | BOOL16 WINAPI GetCurrentPositionEx16( HDC16 hdc, LPPOINT16 pt )
  function BOOL16 (line 4600) | BOOL16 WINAPI GetTextExtentPoint16( HDC16 hdc, LPCSTR str, INT16 count, ...
  function BOOL16 (line 4621) | BOOL16 WINAPI GetViewportExtEx16( HDC16 hdc, LPSIZE16 size )
  function BOOL16 (line 4634) | BOOL16 WINAPI GetViewportOrgEx16( HDC16 hdc, LPPOINT16 pt )
  function BOOL16 (line 4647) | BOOL16 WINAPI GetWindowExtEx16( HDC16 hdc, LPSIZE16 size )
  function BOOL16 (line 4660) | BOOL16 WINAPI GetWindowOrgEx16( HDC16 hdc, LPPOINT16 pt )
  function BOOL16 (line 4673) | BOOL16 WINAPI OffsetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOIN...
  function BOOL16 (line 4689) | BOOL16 WINAPI OffsetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT1...
  function BOOL16 (line 4705) | BOOL16 WINAPI SetBitmapDimensionEx16( HBITMAP16 hbitmap, INT16 x, INT16 ...
  function BOOL16 (line 4722) | BOOL16 WINAPI SetViewportExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 ...
  function BOOL16 (line 4734) | BOOL16 WINAPI SetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16...
  function BOOL16 (line 4750) | BOOL16 WINAPI SetWindowExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 si...
  function BOOL16 (line 4762) | BOOL16 WINAPI SetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt )
  function BOOL16 (line 4778) | BOOL16 WINAPI MoveToEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt )
  function BOOL16 (line 4795) | BOOL16 WINAPI ScaleViewportExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom,
  function BOOL16 (line 4809) | BOOL16 WINAPI ScaleWindowExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom,
  function BOOL16 (line 4823) | BOOL16 WINAPI GetAspectRatioFilterEx16( HDC16 hdc, LPSIZE16 pAspectRatio )
  function BOOL16 (line 4833) | BOOL16 WINAPI PolyBezier16( HDC16 hdc, const POINT16* lppt, INT16 cPoints )
  function BOOL16 (line 4853) | BOOL16 WINAPI PolyBezierTo16( HDC16 hdc, const POINT16* lppt, INT16 cPoi...
  function INT16 (line 4874) | INT16 WINAPI ExtSelectClipRgn16( HDC16 hdc, HRGN16 hrgn, INT16 fnMode )
  function BOOL16 (line 4883) | BOOL16 WINAPI AbortPath16(HDC16 hdc)
  function BOOL16 (line 4892) | BOOL16 WINAPI BeginPath16(HDC16 hdc)
  function BOOL16 (line 4901) | BOOL16 WINAPI CloseFigure16(HDC16 hdc)
  function BOOL16 (line 4910) | BOOL16 WINAPI EndPath16(HDC16 hdc)
  function BOOL16 (line 4919) | BOOL16 WINAPI FillPath16(HDC16 hdc)
  function BOOL16 (line 4928) | BOOL16 WINAPI FlattenPath16(HDC16 hdc)
  function INT16 (line 4937) | INT16 WINAPI GetPath16(HDC16 hdc, LPPOINT16 pPoints, LPBYTE pTypes, INT1...
  function HRGN16 (line 4947) | HRGN16 WINAPI PathToRegion16(HDC16 hdc)
  function BOOL16 (line 4956) | BOOL16 WINAPI SelectClipPath16(HDC16 hdc, INT16 iMode)
  function BOOL16 (line 4965) | BOOL16 WINAPI StrokeAndFillPath16(HDC16 hdc)
  function BOOL16 (line 4974) | BOOL16 WINAPI StrokePath16(HDC16 hdc)
  function BOOL16 (line 4983) | BOOL16 WINAPI WidenPath16(HDC16 hdc)
  function INT16 (line 4992) | INT16 WINAPI GetArcDirection16( HDC16 hdc )
  function INT16 (line 5001) | INT16 WINAPI SetArcDirection16( HDC16 hdc, INT16 nDirection )
  function HPALETTE16 (line 5010) | HPALETTE16 WINAPI CreateHalftonePalette16( HDC16 hdc )
  function UINT16 (line 5019) | UINT16 WINAPI SetDIBColorTable16( HDC16 hdc, UINT16 startpos, UINT16 ent...
  function UINT16 (line 5028) | UINT16 WINAPI GetDIBColorTable16( HDC16 hdc, UINT16 startpos, UINT16 ent...
  function DWORD (line 5039) | DWORD WINAPI GetRegionData16( HRGN16 hrgn, DWORD count, LPRGNDATA rgndata )
  function WORD (line 5048) | WORD WINAPI GdiFreeResources16( DWORD reserve )
  function WORD (line 5057) | WORD WINAPI GdiSignalProc( UINT uCode, DWORD dwThreadOrProcessID,
  function UINT16 (line 5067) | UINT16 WINAPI GetTextCharset16( HDC16 hdc )
  function INT16 (line 5076) | INT16 WINAPI EnumFontFamiliesEx16( HDC16 hdc, LPLOGFONT16 plf,
  function DWORD (line 5102) | DWORD WINAPI GetFontLanguageInfo16( HDC16 hdc )
  function BOOL16 (line 5113) | BOOL16 WINAPI SetLayout16( HDC16 hdc, DWORD layout )
  function BOOL16 (line 5136) | BOOL16 WINAPI SetSolidBrush16(HBRUSH16 hBrush, COLORREF newColor )
  function Copy16 (line 5146) | void WINAPI Copy16( LPVOID src, LPVOID dst, WORD size )
  function UINT16 (line 5154) | UINT16 WINAPI RealizeDefaultPalette16( HDC16 hdc )
  function BOOL16 (line 5163) | BOOL16 WINAPI IsDCCurrentPalette16(HDC16 hDC)
  function VOID (line 5171) | VOID WINAPI SetMagicColors16(HDC16 hDC, COLORREF color, UINT16 index)
  function BOOL16 (line 5181) | BOOL16 WINAPI DPtoLP16( HDC16 hdc, LPPOINT16 points, INT16 count )
  function BOOL16 (line 5216) | BOOL16 WINAPI LPtoDP16( HDC16 hdc, LPPOINT16 points, INT16 count )
  function HDC16 (line 5251) | HDC16 WINAPI GetDCState16( HDC16 hdc )
  function SetDCState16 (line 5261) | void WINAPI SetDCState16( HDC16 hdc, HDC16 hdcs )
  function DWORD (line 5269) | DWORD WINAPI SetDCOrg16( HDC16 hdc16, INT16 x, INT16 y )
  function HRGN16 (line 5279) | HRGN16 WINAPI InquireVisRgn16( HDC16 hdc )
  function INT16 (line 5292) | INT16 WINAPI OffsetVisRgn16( HDC16 hdc16, INT16 x, INT16 y )
  function INT16 (line 5302) | INT16 WINAPI ExcludeVisRect16( HDC16 hdc16, INT16 left, INT16 top, INT16...
  function INT16 (line 5312) | INT16 WINAPI IntersectVisRect16( HDC16 hdc16, INT16 left, INT16 top, INT...
  function HRGN16 (line 5322) | HRGN16 WINAPI SaveVisRgn16( HDC16 hdc16 )
  function INT16 (line 5332) | INT16 WINAPI RestoreVisRgn16( HDC16 hdc16 )
  function HRGN16 (line 5342) | HRGN16 WINAPI GetClipRgn16( HDC16 hdc )
  function MakeObjectPrivate16 (line 5359) | void WINAPI MakeObjectPrivate16( HGDIOBJ16 handle16, BOOL16 private )
  function HBITMAP16 (line 5367) | HBITMAP16 WINAPI CreateDIBSection16 (HDC16 hdc, const BITMAPINFO *bmi, U...
  function GdiTaskTermination16 (line 5378) | void WINAPI GdiTaskTermination16(WORD arg1)
  function WORD (line 5382) | WORD WINAPI GetPhysicalFontHandle16(WORD arg1/* dc? */)
  function WORD (line 5387) | WORD WINAPI GdiMoveBitmap16(WORD arg1)
  function BOOL16 (line 5392) | BOOL16 WINAPI IsDCDirty16(WORD arg1, SEGPTR arg2)
  function UnicodeToAnsi16 (line 5397) | void WINAPI UnicodeToAnsi16(SEGPTR arg1, SEGPTR arg2)
  function ShrinkGdiHeap16 (line 5402) | void WINAPI ShrinkGdiHeap16()
  function DWORD (line 5406) | DWORD WINAPI GetAspectRatioFilter16(WORD arg1)
  function WORD (line 5411) | WORD WINAPI SelectBitmap16(WORD arg1, WORD arg2)
  function WORD (line 5417) | WORD WINAPI GetFontAssocStatus16(HDC16 hdc)
  function WORD (line 5438) | WORD WINAPI ScanLR16(HDC16 hdc, WORD x, WORD y, DWORD color, WORD style)
  function BOOL (line 5463) | BOOL WINAPI DllEntryPoint(DWORD fdwReason, HINSTANCE hinstDLL, WORD ds,
  function HFONT16 (line 5512) | HFONT16 WINAPI GetSystemIconFont16()

FILE: gdi/metafile.c
  function METAHEADER (line 48) | static METAHEADER *MF_GetMetaHeader16( HMETAFILE16 hmf )
  function BOOL16 (line 58) | static BOOL16 MF_ReleaseMetaHeader16( HMETAFILE16 hmf )
  function HMETAFILE16 (line 68) | static HMETAFILE16 create_metafile16( HMETAFILE hmf )
  function HMETAFILE (line 91) | static HMETAFILE create_metafile32( HMETAFILE16 hmf16 )
  function HDC16 (line 101) | HDC16 WINAPI CreateMetaFile16( LPCSTR filename )
  function HMETAFILE16 (line 109) | HMETAFILE16 WINAPI CloseMetaFile16(HDC16 hdc)
  function BOOL16 (line 117) | BOOL16 WINAPI DeleteMetaFile16(  HMETAFILE16 hmf )
  function HMETAFILE16 (line 125) | HMETAFILE16 WINAPI GetMetaFile16( LPCSTR lpFilename )
  function HMETAFILE16 (line 133) | HMETAFILE16 WINAPI CopyMetaFile16( HMETAFILE16 hSrcMetaFile, LPCSTR lpFi...
  function BOOL16 (line 155) | BOOL16 WINAPI IsValidMetaFile16(HMETAFILE16 hmf)
  function BOOL16 (line 174) | BOOL16 WINAPI PlayMetaFile16( HDC16 hdc, HMETAFILE16 hmf16 )
  type enum_metafile_data (line 184) | typedef struct
  function EnumMetaFileCallback (line 195) | int CALLBACK EnumMetaFileCallback(HDC hdc, HANDLETABLE *lpht, METARECORD...
  function BOOL16 (line 236) | BOOL16 WINAPI EnumMetaFile16( HDC16 hdc16, HMETAFILE16 hmf,
  function HGLOBAL16 (line 356) | HGLOBAL16 WINAPI GetMetaFileBits16( HMETAFILE16 hmf )
  function HMETAFILE16 (line 376) | HMETAFILE16 WINAPI SetMetaFileBits16( HGLOBAL16 hMem )
  function HMETAFILE16 (line 393) | HMETAFILE16 WINAPI SetMetaFileBitsBetter16( HMETAFILE16 hMeta )

FILE: gdi/printdrv.c
  type hpq (line 67) | struct hpq
  type hpq (line 74) | struct hpq
  function HPQ16 (line 80) | HPQ16 WINAPI CreatePQ16(INT16 size)
  function INT16 (line 108) | INT16 WINAPI DeletePQ16(HPQ16 hPQ)
  function INT16 (line 117) | INT16 WINAPI ExtractPQ16(HPQ16 hPQ)
  function INT16 (line 159) | INT16 WINAPI InsertPQ16(HPQ16 hPQ, INT16 tag, INT16 key)
  function INT16 (line 179) | INT16 WINAPI MinPQ16(HPQ16 hPQ)
  function INT16 (line 189) | INT16 WINAPI SizePQ16(HPQ16 hPQ, INT16 sizechange)
  type PRINTJOB (line 204) | typedef struct PRINTJOB
  function PPRINTJOB (line 220) | static PPRINTJOB FindPrintJobFromHandle(HANDLE16 hHandle)
  function CreateSpoolFile (line 227) | static int CreateSpoolFile(LPCSTR pszOutput, pid_t *out_pid)
  function FreePrintJob (line 319) | static int FreePrintJob(HANDLE16 hJob)
  function HPJOB16 (line 352) | HPJOB16 WINAPI OpenJob16(LPCSTR lpOutput, LPCSTR lpTitle, HDC16 hDC)
  function INT16 (line 403) | INT16 WINAPI CloseJob16(HPJOB16 hJob)
  function INT16 (line 425) | INT16 WINAPI WriteSpool16(HPJOB16 hJob, LPSTR lpData, INT16 cch)
  type LPCSTR (line 458) | typedef INT (WINAPI *MSGBOX_PROC)( HWND, LPCSTR, LPCSTR, UINT );
  function INT16 (line 464) | INT16 WINAPI WriteDialog16(HPJOB16 hJob, LPSTR lpMsg, INT16 cchMsg)
  function INT16 (line 485) | INT16 WINAPI DeleteJob16(HPJOB16 hJob, INT16 nNotUsed)
  function INT16 (line 505) | INT16 WINAPI StartSpoolPage16(HPJOB16 hJob)
  function INT16 (line 517) | INT16 WINAPI EndSpoolPage16(HPJOB16 hJob)
  function DWORD (line 528) | DWORD WINAPI GetSpoolJob16(int nOption, LONG param)
  function DWORD (line 541) | static DWORD DrvGetPrinterDataInternal(LPCSTR RegStr_Printer,
  function DWORD (line 575) | DWORD WINAPI DrvGetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
  function DWORD (line 669) | DWORD WINAPI DrvSetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
  function HANDLE16 (line 725) | HANDLE16 WINAPI SpoolFile16(LPCSTR printer, LPCSTR port, LPCSTR job, LPC...

FILE: gvm/gvm-interface.h
  type gvm_memory_alias (line 67) | struct gvm_memory_alias {
  type gvm_pic_state (line 76) | struct gvm_pic_state {
  type gvm_ioapic_state (line 96) | struct gvm_ioapic_state {
  type gvm_regs (line 128) | struct gvm_regs {
  type gvm_lapic_state (line 139) | struct gvm_lapic_state {
  type gvm_segment (line 143) | struct gvm_segment {
  type gvm_dtable (line 153) | struct gvm_dtable {
  type gvm_sregs (line 161) | struct gvm_sregs {
  type gvm_fpu (line 173) | struct gvm_fpu {
  type gvm_msr_entry (line 187) | struct gvm_msr_entry {
  type gvm_msrs (line 194) | struct gvm_msrs {
  type gvm_msr_list (line 202) | struct gvm_msr_list {
  type gvm_cpuid_entry (line 207) | struct gvm_cpuid_entry {
  type gvm_cpuid (line 223) | struct gvm_cpuid {
  type gvm_debug_exit_arch (line 229) | struct gvm_debug_exit_arch {
  type gvm_guest_debug_arch (line 243) | struct gvm_guest_debug_arch {
  type gvm_vcpu_events (line 258) | struct gvm_vcpu_events {
  type gvm_debugregs (line 290) | struct gvm_debugregs {
  type gvm_xsave (line 299) | struct gvm_xsave {
  type gvm_xcr (line 305) | struct gvm_xcr {
  type gvm_xcrs (line 311) | struct gvm_xcrs {
  type gvm_sync_regs (line 319) | struct gvm_sync_regs {
  type gvm_memory_region (line 337) | struct gvm_memory_region {
  type gvm_userspace_memory_region (line 345) | struct gvm_userspace_memory_region {
  type gvm_irq_level (line 362) | struct gvm_irq_level {
  type gvm_irqchip (line 377) | struct gvm_irqchip {
  type gvm_run (line 418) | struct gvm_run {
  type gvm_translation (line 536) | struct gvm_translation {
  type gvm_interrupt (line 549) | struct gvm_interrupt {
  type gvm_dirty_log (line 555) | struct gvm_dirty_log {
  type gvm_tpr_access_ctl (line 565) | struct gvm_tpr_access_ctl {
  type gvm_vapic_addr (line 572) | struct gvm_vapic_addr {
  type gvm_mp_state (line 589) | struct gvm_mp_state {
  type gvm_guest_debug (line 598) | struct gvm_guest_debug {
  type gvm_enable_cap (line 605) | struct gvm_enable_cap {
  type gvm_irq_routing_irqchip (line 669) | struct gvm_irq_routing_irqchip {
  type gvm_irq_routing_msi (line 674) | struct gvm_irq_routing_msi {
  type gvm_irq_routing_hv_sint (line 684) | struct gvm_irq_routing_hv_sint {
  type gvm_irq_routing_entry (line 694) | struct gvm_irq_routing_entry {
  type gvm_irq_routing (line 707) | struct gvm_irq_routing {
  type gvm_config_tlb (line 718) | struct gvm_config_tlb {
  type gvm_dirty_tlb (line 725) | struct gvm_dirty_tlb {
  type gvm_reg_list (line 758) | struct gvm_reg_list {
  type gvm_one_reg (line 763) | struct gvm_one_reg {
  type gvm_msi (line 769) | struct gvm_msi {

FILE: gvm/gvm.c
  function DWORD (line 12) | DWORD WINAPI panic_msgbox(LPVOID data)
  function panic (line 26) | void panic(const char *msg, ...)
  function panic_hresult (line 42) | void panic_hresult(const char *msg, HRESULT result, const char *func, in...
  function PVOID (line 59) | PVOID dynamic_setWOW32Reserved(PVOID w)
  function PVOID (line 70) | PVOID dynamic_getWOW32Reserved()
  function WINE_VM86_TEB_INFO (line 81) | WINE_VM86_TEB_INFO *dynamic_getGdiTebBatch()
  function dynamic__wine_call_int_handler (line 92) | void dynamic__wine_call_int_handler(CONTEXT *context, BYTE intnum)
  function BOOL (line 108) | static BOOL SELECTOR_SetEntries(WORD sel, const void *base, DWORD size, ...
  function WORD (line 132) | WORD SELECTOR_AllocBlock(const void *base, DWORD size, unsigned char flags)
  function load_seg (line 149) | void load_seg(struct gvm_segment *segment, WORD sel)
  function set_eflags (line 165) | void set_eflags(struct gvm_vcpu_state *state, DWORD eflags)
  function load_context_to_state (line 170) | void load_context_to_state(CONTEXT *context, vcpu_state *state)
  function save_context_from_state (line 192) | void save_context_from_state(CONTEXT *context, vcpu_state *state)
  type interrupt_gate_type (line 216) | typedef enum
  type interrupt_gate (line 224) | typedef struct
  type DWORD (line 264) | typedef DWORD (*DOSVM_inport_t)(int port, int size);
  function HANDLE (line 304) | static HANDLE get_vcpu_handle()
  type gvm_run (line 319) | struct gvm_run
  function get_vcpu_regs (line 322) | static void get_vcpu_regs(vcpu_state *state)
  function set_vcpu_regs (line 336) | static void set_vcpu_regs(vcpu_state *state)
  function init_vcpu (line 351) | static void init_vcpu()
  function BOOL (line 390) | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
  function PUSH16 (line 476) | void PUSH16(struct gvm_vcpu_state *state, WORD val)
  function PUSH32 (line 491) | void PUSH32(struct gvm_vcpu_state *state, DWORD val)
  function WORD (line 506) | WORD POP16(struct gvm_vcpu_state *state)
  function DWORD (line 521) | DWORD POP32(struct gvm_vcpu_state *state)
  function WORD (line 536) | WORD PEEK16(struct gvm_vcpu_state *state, int i)
  function DWORD (line 549) | DWORD PEEK32(struct gvm_vcpu_state *state, int i)
  type STACK16FRAME (line 601) | typedef struct _STACK16FRAME
  function LPBYTE (line 757) | LPBYTE get_base_addr(WORD sel)
  function trace (line 763) | static void trace(vcpu_state *state, uint16 cs, uint32 eip, uint16 ss, u...
  function BOOL (line 815) | BOOL has_x86_exception_err(WORD num)
  function BOOL (line 850) | BOOL WINAPI vm_inject(DWORD vpfn16, DWORD dwFlags,
  function vm_inject_call (line 857) | void vm_inject_call(SEGPTR ret_addr, PEXCEPTION_HANDLER handler,
  function compare (line 897) | static int compare(const void *a1, const void *a2)
  function vm86main (line 907) | void vm86main(CONTEXT *context, DWORD csip, DWORD sssp, DWORD cbArgs, PE...
  function DWORD (line 1111) | __declspec(dllexport) DWORD wine_call_to_16_vm86(DWORD target, DWORD cbA...
  function wine_call_to_16_regs_vm86 (line 1129) | __declspec(dllexport) void wine_call_to_16_regs_vm86(CONTEXT *context, D...

FILE: gvm/gvm.h
  type gvm_vcpu_state (line 7) | struct gvm_vcpu_state
  type UINT16 (line 13) | typedef UINT16 uint16;
  type UINT32 (line 14) | typedef UINT32 uint32;
  type UINT64 (line 15) | typedef UINT64 uint64;
  type vcpu_state (line 17) | typedef struct gvm_vcpu_state vcpu_state;
  type segment (line 18) | typedef struct gvm_segment segment;
  function uint16 (line 20) | static inline uint16 get_ax(vcpu_state *state)
  function uint16 (line 25) | static inline uint16 get_cx(vcpu_state *state)
  function uint16 (line 30) | static inline uint16 get_dx(vcpu_state *state)
  function uint16 (line 35) | static inline uint16 get_bx(vcpu_state *state)
  function uint16 (line 40) | static inline uint16 get_sp(vcpu_state *state)
  function uint16 (line 45) | static inline uint16 get_bp(vcpu_state *state)
  function uint16 (line 50) | static inline uint16 get_si(vcpu_state *state)
  function uint16 (line 55) | static inline uint16 get_di(vcpu_state *state)
  function uint16 (line 60) | static inline uint16 get_ip(vcpu_state *state)
  function uint16 (line 65) | static inline uint16 get_flags(vcpu_state *state)
  function uint16 (line 70) | static inline uint16 set_ax(vcpu_state *state, uint16 val)
  function uint16 (line 75) | static inline uint16 set_cx(vcpu_state *state, uint16 val)
  function uint16 (line 80) | static inline uint16 set_dx(vcpu_state *state, uint16 val)
  function uint16 (line 85) | static inline uint16 set_bx(vcpu_state *state, uint16 val)
  function uint16 (line 90) | static inline uint16 set_sp(vcpu_state *state, uint16 val)
  function uint16 (line 95) | static inline uint16 set_bp(vcpu_state *state, uint16 val)
  function uint16 (line 100) | static inline uint16 set_si(vcpu_state *state, uint16 val)
  function uint16 (line 105) | static inline uint16 set_di(vcpu_state *state, uint16 val)
  function uint16 (line 110) | static inline uint16 set_ip(vcpu_state *state, uint16 val)
  function segment (line 115) | static inline segment *get_es(vcpu_state *state)
  function segment (line 120) | static inline segment *get_cs(vcpu_state *state)
  function segment (line 125) | static inline segment *get_ss(vcpu_state *state)
  function segment (line 130) | static inline segment *get_ds(vcpu_state *state)
  function segment (line 135) | static inline segment *get_fs(vcpu_state *state)
  function segment (line 140) | static inline segment *get_gs(vcpu_state *state)
  function uint16 (line 145) | static inline uint16 get_seg_selector(segment *seg)
  function uint32 (line 150) | static inline uint32 get_seg_base(segment *seg)
  function uint32 (line 155) | static inline uint32 get_seg_limit(segment *seg)
  function uint32 (line 162) | static inline uint32 get_eax(vcpu_state *state)
  function uint32 (line 167) | static inline uint32 get_ecx(vcpu_state *state)
  function uint32 (line 172) | static inline uint32 get_edx(vcpu_state *state)
  function uint32 (line 177) | static inline uint32 get_ebx(vcpu_state *state)
  function uint32 (line 182) | static inline uint32 get_esp(vcpu_state *state)
  function uint32 (line 187) | static inline uint32 get_ebp(vcpu_state *state)
  function uint32 (line 192) | static inline uint32 get_esi(vcpu_state *state)
  function uint32 (line 197) | static inline uint32 get_edi(vcpu_state *state)
  function uint32 (line 202) | static inline uint32 get_eip(vcpu_state *state)
  function uint32 (line 207) | static inline uint32 get_eflags(vcpu_state *state)
  function uint32 (line 212) | static inline uint32 set_eax(vcpu_state *state, uint32 val)
  function uint32 (line 217) | static inline uint32 set_ecx(vcpu_state *state, uint32 val)
  function uint32 (line 222) | static inline uint32 set_edx(vcpu_state *state, uint32 val)
  function uint32 (line 227) | static inline uint32 set_ebx(vcpu_state *state, uint32 val)
  function uint32 (line 232) | static inline uint32 set_esp(vcpu_state *state, uint32 val)
  function uint32 (line 237) | static inline uint32 set_ebp(vcpu_state *state, uint32 val)
  function uint32 (line 242) | static inline uint32 set_esi(vcpu_state *state, uint32 val)
  function uint32 (line 247) | static inline uint32 set_edi(vcpu_state *state, uint32 val)
  function uint32 (line 252) | static inline uint32 set_eip(vcpu_state *state, uint32 val)

FILE: haxmvm/haxmvm.c
  function DWORD (line 9) | DWORD WINAPI panic_msgbox(LPVOID data)
  function haxmvm_panic (line 15) | void haxmvm_panic(const char *fmt, ...)
  function PVOID (line 29) | PVOID dynamic_setWOW32Reserved(PVOID w)
  function PVOID (line 39) | PVOID dynamic_getWOW32Reserved()
  function WINE_VM86_TEB_INFO (line 49) | WINE_VM86_TEB_INFO *dynamic_getGdiTebBatch()
  function dynamic__wine_call_int_handler (line 59) | void dynamic__wine_call_int_handler(CONTEXT *context, BYTE intnum)
  function BOOL (line 74) | static BOOL SELECTOR_SetEntries(WORD sel, const void *base, DWORD size, ...
  function WORD (line 98) | WORD SELECTOR_AllocBlock(const void *base, DWORD size, unsigned char flags)
  type hax_tunnel (line 117) | struct hax_tunnel
  function load_seg (line 131) | void load_seg(segment_desc_t *segment, WORD sel)
  function set_eflags (line 148) | void set_eflags(struct vcpu_state_t *state, DWORD eflags)
  function load_context_to_state (line 152) | void load_context_to_state(CONTEXT *context, struct vcpu_state_t *state)
  function load_context (line 175) | void load_context(CONTEXT *context)
  function save_context_from_state (line 204) | void save_context_from_state(CONTEXT *context, struct vcpu_state_t *state)
  function save_context (line 226) | void save_context(CONTEXT *context)
  type interrupt_gate_type (line 236) | typedef enum
  type interrupt_gate (line 244) | typedef struct
  function BOOL (line 292) | static BOOL set_ram(struct hax_set_ram_info *pram)
  function alloc_ram (line 318) | void alloc_ram(uint32_t addr, uint32_t size)
  function intel_vt_x_workaround_update_entry (line 345) | static void intel_vt_x_workaround_update_entry(int sel, const LDT_ENTRY ...
  type wow64_syscall (line 371) | struct wow64_syscall
  type hooked_syscall (line 382) | struct hooked_syscall
  function BOOL (line 388) | BOOL hook_nt_syscall(struct wow64_syscall **old_syscall, LPVOID hook_fun...
  function discard_memory (line 416) | static void discard_memory(PVOID BaseAddress, ULONG RegionSize)
  type wow64_syscall (line 437) | struct wow64_syscall
  function NTSTATUS (line 438) | NTSTATUS NTAPI hook_NtFreeVirtualMemory(HANDLE ProcessHandle, PVOID *Bas...
  function BOOL (line 448) | __declspec(dllexport) BOOL haxmvm_DeleteObject(HANDLE hobj)
  type hax_module_version (line 492) | struct hax_module_version
  type hax_qemu_version (line 514) | struct hax_qemu_version
  type hax_tunnel_info (line 529) | struct hax_tunnel_info
  type hax_alloc_ram_info (line 536) | struct hax_alloc_ram_info
  type hax_set_ram_info (line 537) | struct hax_set_ram_info
  type hax_tunnel (line 558) | struct hax_tunnel
  type vcpu_state_t (line 559) | struct vcpu_state_t
  function BOOL (line 653) | BOOL vm_exit()
  function PUSH16 (line 661) | void PUSH16(struct vcpu_state_t *state, WORD val)
  function PUSH32 (line 676) | void PUSH32(struct vcpu_state_t *state, DWORD val)
  function WORD (line 691) | WORD POP16(struct vcpu_state_t *state)
  function DWORD (line 706) | DWORD POP32(struct vcpu_state_t *state)
  function WORD (line 721) | WORD PEEK16(struct vcpu_state_t *state, int i)
  function DWORD (line 734) | DWORD PEEK32(struct vcpu_state_t *state, int i)
  type vcpu_state_t (line 747) | struct vcpu_state_t
  type STACK16FRAME (line 785) | typedef struct _STACK16FRAME
  function LPBYTE (line 942) | LPBYTE get_base_addr(WORD sel)
  function set_break_point (line 947) | void set_break_point(struct vcpu_state_t *state, WORD sel, DWORD addr, i...
  function trace (line 977) | static void trace(struct vcpu_state_t *state, uint16 cs, uint32 eip, uin...
  function BOOL (line 1030) | BOOL has_x86_exception_err(WORD num)
  function BOOL (line 1056) | BOOL workaround_watcom(struct vcpu_state_t *state, uint16 cs, uint32 eip)
  function vm86main (line 1094) | void vm86main(CONTEXT *context, DWORD cbArgs, PEXCEPTION_HANDLER handler,
  function DWORD (line 1415) | __declspec(dllexport) DWORD wine_call_to_16_vm86(DWORD target, DWORD cbA...
  function wine_call_to_16_regs_vm86 (line 1441) | __declspec(dllexport) void wine_call_to_16_regs_vm86(CONTEXT *context, D...
  function callx87 (line 1462) | void callx87(const char *addr, LPCVOID eax)
  function BOOL (line 1507) | static BOOL get_fpu_regs(struct fx_layout *fx)
  function BOOL (line 1516) | static BOOL set_fpu_regs(struct fx_layout *fx)
  function fldcw (line 1525) | void fldcw(WORD a)
  function wait (line 1538) | void wait()
  function fninit (line 1543) | void fninit()
  function fstcw (line 1548) | void fstcw(WORD* a)
  function fstsw (line 1557) | void fstsw(WORD* a)
  function frndint (line 1566) | void frndint()
  function fclex (line 1571) | void fclex()
  function fsave (line 1576) | void fsave(char* a)
  function frstor (line 1581) | void frstor(const char* a)
  function fstenv32 (line 1586) | void fstenv32(char* a)
  type DWORD (line 1601) | typedef DWORD(*fistp_t)(WORD);
  type x87function (line 1602) | typedef struct
  function load_x87function (line 1616) | __declspec(dllexport) void load_x87function(x87function *func)

FILE: haxmvm/haxmvm.h
  type int8 (line 6) | typedef signed char         int8;
  type int16 (line 7) | typedef signed short        int16;
  type int32 (line 8) | typedef signed int          int32;
  type int64 (line 9) | typedef signed long long    int64;
  type uint8 (line 12) | typedef unsigned char       uint8;
  type uint16 (line 13) | typedef unsigned short      uint16;
  type uint32 (line 14) | typedef unsigned int        uint32;
  type uint (line 15) | typedef unsigned int        uint;
  type uint64 (line 16) | typedef unsigned long long  uint64;
  type ulong (line 17) | typedef unsigned long       ulong;
  type ulong_t (line 23) | typedef unsigned long       ulong_t;
  type uint64 (line 26) | typedef uint64 hax_pa_t;
  type uint64 (line 27) | typedef uint64 hax_pfn_t;
  type uint64 (line 28) | typedef uint64 paddr_t;
  type uint64 (line 29) | typedef uint64 vaddr_t;
  type hax_module_version (line 32) | struct hax_module_version {
  type vmx_msr (line 36) | struct vmx_msr {
  type hax_msr_data (line 41) | struct hax_msr_data {
  type hax_set_ram_info (line 47) | struct hax_set_ram_info {
  type hax_alloc_ram_info (line 55) | struct hax_alloc_ram_info {
  type interruptibility_state_t (line 72) | typedef union interruptibility_state_t interruptibility_state_t;
  type segment_desc_t (line 74) | struct segment_desc_t {
  type segment_desc_t (line 98) | typedef struct segment_desc_t segment_desc_t;
  type vcpu_state_t (line 100) | struct vcpu_state_t {
  type hax_qemu_version (line 219) | struct hax_qemu_version {
  type hax_tunnel_info (line 228) | struct hax_tunnel_info {
  type exit_status (line 234) | typedef enum exit_status {
  type exit_reason (line 246) | typedef enum exit_reason {
  type hax_tunnel (line 251) | struct hax_tunnel {
  type run_flag (line 295) | enum run_flag {
  type hax_vcpu_mem (line 304) | struct hax_vcpu_mem {
  type fx_layout (line 312) | struct fx_layout {
  type hax_capabilityinfo (line 361) | struct hax_capabilityinfo {

FILE: keyboard/keyboard.c
  type KBINFO (line 41) | typedef struct _KBINFO
  function WORD (line 57) | WORD WINAPI Inquire16(LPKBINFO kbInfo)
  function VOID (line 71) | VOID WINAPI Enable16( FARPROC16 proc, LPBYTE lpKeyState )
  function VOID (line 82) | VOID WINAPI Disable16(VOID)
  function INT16 (line 91) | INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState,
  function INT16 (line 100) | INT16 WINAPI AnsiToOem16( LPCSTR s, LPSTR d )
  function INT16 (line 109) | INT16 WINAPI OemToAnsi16( LPCSTR s, LPSTR d )
  function WORD (line 118) | WORD WINAPI SetSpeed16(WORD unused)
  function VOID (line 127) | VOID WINAPI ScreenSwitchEnable16(WORD unused)
  function DWORD (line 135) | DWORD WINAPI OemKeyScan16(WORD wOemChar)
  function WORD (line 143) | WORD WINAPI VkKeyScan16(CHAR cChar)
  function INT16 (line 151) | INT16 WINAPI GetKeyboardType16(INT16 nTypeFlag)
  function UINT16 (line 161) | UINT16 WINAPI MapVirtualKey16(UINT16 wCode, UINT16 wMapType)
  function INT16 (line 169) | INT16 WINAPI GetKBCodePage16(void)
  function INT16 (line 177) | INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize)
  function AnsiToOemBuff16 (line 185) | void WINAPI AnsiToOemBuff16( LPCSTR s, LPSTR d, UINT16 len )
  function OemToAnsiBuff16 (line 193) | void WINAPI OemToAnsiBuff16( LPCSTR s, LPSTR d, UINT16 len )

FILE: krnl386/atom.c
  type ATOMENTRY (line 56) | typedef struct
  type ATOMTABLE (line 64) | typedef struct
  function ATOMTABLE (line 81) | static ATOMTABLE *ATOM_GetTable( BOOL create  /* [in] Create */ )
  function WORD (line 102) | static WORD ATOM_Hash(
  function BOOL (line 119) | static BOOL ATOM_IsIntAtomA(LPCSTR atomstr,WORD *atomid)
  function ATOMENTRY (line 148) | static inline ATOMENTRY *ATOM_MakePtr( HANDLE16 handle /* [in] Handle */ )
  function WORD (line 157) | WORD WINAPI InitAtomTable16( WORD entries )
  function HANDLE16 (line 181) | HANDLE16 WINAPI GetAtomHandle16( ATOM atom )
  function ATOM (line 200) | ATOM WINAPI AddAtom16( LPCSTR str )
  function ATOM (line 259) | ATOM WINAPI DeleteAtom16( ATOM atom )
  function ATOM (line 297) | ATOM WINAPI FindAtom16( LPCSTR str )
  function UINT16 (line 330) | UINT16 WINAPI GetAtomName16( ATOM atom, LPSTR buffer, INT16 count )

FILE: krnl386/compat.c
  function BOOL (line 8) | BOOL WINAPI krnl386_get_compat_mode(const LPCSTR mode)
  function krnl386_set_compat_path (line 20) | void WINAPI krnl386_set_compat_path(const LPCSTR path)
  function ULONG (line 84) | ULONG WINAPI get_windows_build()

FILE: krnl386/conf.c
  function init_config (line 8) | void init_config()
  function DWORD (line 25) | DWORD WINAPI krnl386_get_config_string(LPCSTR appname, LPCSTR keyname, L...
  function DWORD (line 35) | DWORD WINAPI krnl386_get_config_int(LPCSTR appname, LPCSTR keyname, INT ...

FILE: krnl386/dma.c
  function DMA_Transfer (line 46) | int DMA_Transfer(int channel,int reqlen,void* buffer)
  function DMA_ioport_out (line 155) | void DMA_ioport_out( WORD port, BYTE val )
  function BYTE (line 306) | BYTE DMA_ioport_in( WORD port )

FILE: krnl386/dosaspi.c
  function DOSASPI_PostProc (line 36) | static void
  function DWORD (line 106) | static
  function ASPI_DOS_func (line 178) | static void WINAPI ASPI_DOS_func(CONTEXT *context)
  function DOSVM_ASPIHandler (line 197) | void DOSVM_ASPIHandler( CONTEXT *context )

FILE: krnl386/dosdev.c
  type DOS_LISTOFLISTS (line 30) | typedef struct _DOS_LISTOFLISTS
  type strategy (line 72) | enum strategy { SYSTEM_STRATEGY_NUL, SYSTEM_STRATEGY_CON, NB_SYSTEM_STRA...
  type DOS_DATASEG (line 100) | typedef struct
  type _DOS_LISTOFLISTS (line 115) | struct _DOS_LISTOFLISTS
  function do_lret (line 122) | static void do_lret(CONTEXT*ctx)
  function do_strategy (line 131) | static void do_strategy(CONTEXT*ctx, int id, int extra)
  function REQUEST_HEADER (line 144) | static REQUEST_HEADER * get_hdr(int id, void**extra)
  function nul_strategy (line 152) | static void WINAPI nul_strategy(CONTEXT*ctx)
  function nul_interrupt (line 157) | static void WINAPI nul_interrupt(CONTEXT*ctx)
  function con_strategy (line 175) | static void WINAPI con_strategy(CONTEXT*ctx)
  function con_interrupt (line 180) | static void WINAPI con_interrupt(CONTEXT*ctx)
  function InitListOfLists (line 371) | static void InitListOfLists(DOS_LISTOFLISTS *DOS_LOL)
  function DOSDEV_SetupDevice (line 419) | void DOSDEV_SetupDevice(const WINEDEV * devinfo,
  function DOSDEV_InstallDOSDevices (line 442) | void DOSDEV_InstallDOSDevices(void)
  function DOSDEV_SetSharingRetry (line 479) | void DOSDEV_SetSharingRetry(WORD delay, WORD count)
  function SEGPTR (line 485) | SEGPTR DOSDEV_GetLOL(BOOL v86)

FILE: krnl386/dosexe.c
  function BOOL (line 63) | BOOL DOSVM_IsWin16(void)
  function DOSVM_Exit (line 71) | void DOSVM_Exit( WORD retval )
  type ExecBlock (line 93) | typedef struct {
  type OverlayBlock (line 104) | typedef struct {
  function MZ_CreatePSP (line 122) | static void MZ_CreatePSP( LPVOID lpPSP, WORD env, WORD par )
  function MZ_FillPSP (line 139) | static void MZ_FillPSP( LPVOID lpPSP, LPCSTR cmdtail, int length )
  function WORD (line 167) | static WORD MZ_InitEnvironment( LPCSTR env, LPCSTR name )
  function BOOL (line 201) | static BOOL MZ_InitMemory(void)
  function BOOL (line 212) | static BOOL MZ_DoLoadImage( HANDLE hFile, LPCSTR filename, OverlayBlock ...
  function __wine_load_dos_exe (line 366) | void __wine_load_dos_exe( LPCSTR filename, LPCSTR cmdline )
  function BOOL (line 455) | BOOL MZ_Exec( CONTEXT *context, LPCSTR filename, BYTE func, LPVOID param...
  function MZ_AllocDPMITask (line 604) | void MZ_AllocDPMITask( void )
  function MZ_RunInThread (line 613) | void MZ_RunInThread( PAPCFUNC proc, ULONG_PTR arg )
  function DWORD (line 629) | static DWORD WINAPI MZ_DOSVM( LPVOID lpExtra )
  function BOOL (line 652) | static BOOL MZ_InitTask(void)
  function DWORD (line 668) | static DWORD MZ_Launch( LPCSTR cmdtail, int length )
  function MZ_Exit (line 704) | void MZ_Exit( CONTEXT *context, BOOL cs_psp, WORD retval )
  function BOOL (line 744) | BOOL MZ_Current( void )
  function __wine_load_dos_exe (line 754) | void __wine_load_dos_exe( LPCSTR filename, LPCSTR cmdline )
  function BOOL (line 762) | BOOL MZ_Exec( CONTEXT *context, LPCSTR filename, BYTE func, LPVOID param...
  function MZ_AllocDPMITask (line 772) | void MZ_AllocDPMITask( void )
  function MZ_RunInThread (line 780) | void MZ_RunInThread( PAPCFUNC proc, ULONG_PTR arg )
  function MZ_Exit (line 788) | void MZ_Exit( CONTEXT *context, BOOL cs_psp, WORD retval )
  function BOOL (line 796) | BOOL MZ_Current( void )

FILE: krnl386/dosexe.h
  type _DOSEVENT (line 40) | struct _DOSEVENT
  type DOS_SPC (line 42) | typedef struct {
  type pid_t (line 46) | typedef int pid_t;
  type DPMI_segments (line 53) | struct DPMI_segments
  type SEGPTR48 (line 66) | typedef struct {
  type DPMI_segments (line 85) | struct DPMI_segments
  type BIOSDATA (line 183) | typedef struct
  type DOS_DEVICE_HEADER (line 263) | typedef struct
  type REQUEST_HEADER (line 301) | typedef struct {
  type REQ_IO (line 309) | typedef struct {
  type REQ_SAFEINPUT (line 318) | typedef struct {
  type WINEDEV_THUNK (line 324) | typedef struct {
  type WINEDEV (line 334) | typedef struct

FILE: krnl386/dosmem.c
  type MCB (line 79) | typedef struct {
  function DOSMEM_FillIsrTable (line 138) | static void DOSMEM_FillIsrTable(void)
  function DOSMEM_MakeIsrStubs (line 146) | static void DOSMEM_MakeIsrStubs(void)
  function BIOSDATA (line 154) | BIOSDATA* DOSVM_BiosData(void)
  function DWORD (line 164) | static DWORD DOSMEM_GetTicksSinceMidnight(void)
  function DOSMEM_FillBiosSegments (line 184) | static void DOSMEM_FillBiosSegments(void)
  function BiosTick (line 250) | static void CALLBACK BiosTick( LPVOID arg, DWORD low, DWORD high )
  function DWORD (line 267) | static DWORD CALLBACK timer_thread( void *arg )
  function DOSVM_start_bios_timer (line 284) | __declspec(dllexport) void DOSVM_start_bios_timer(void)
  function DOSMEM_Collapse (line 298) | static void DOSMEM_Collapse( MCB* mcb )
  function BOOL (line 313) | BOOL DOSMEM_InitDosMemory(void)
  function LONG (line 388) | static LONG WINAPI dosmem_handler(EXCEPTION_POINTERS* except)
  function BOOL (line 407) | BOOL DOSMEM_Init(void)
  function UINT (line 454) | UINT DOSMEM_MapLinearToDos(LPVOID ptr)
  function LPVOID (line 468) | LPVOID DOSMEM_MapDosToLinear(UINT ptr)
  function LPVOID (line 480) | LPVOID DOSMEM_MapRealToLinear(DWORD x)
  function LPVOID (line 494) | LPVOID DOSMEM_AllocBlock(UINT size, UINT16* pseg)
  function BOOL (line 555) | BOOL DOSMEM_FreeBlock(void* ptr)
  function UINT (line 588) | UINT DOSMEM_ResizeBlock(void *ptr, UINT size, BOOL exact)
  function UINT (line 639) | UINT DOSMEM_Available(void)
  function BOOL (line 672) | BOOL DOSMEM_MapDosLayout(void)

FILE: krnl386/dosvm.c
  type DPMI_segments (line 84) | struct DPMI_segments
  type DOSEVENT (line 98) | typedef struct _DOSEVENT {
  type _DOSEVENT (line 105) | struct _DOSEVENT
  function BOOL (line 124) | static BOOL DOSVM_HasPendingEvents( void )
  function DOSVM_SendOneEvent (line 150) | static void DOSVM_SendOneEvent( CONTEXT *context )
  function DOSVM_SendQueuedEvents (line 227) | void DOSVM_SendQueuedEvents( CONTEXT *context )
  function DOSVM_QueueEvent (line 281) | void DOSVM_QueueEvent( INT irq, INT priority, DOSRELAY relay, LPVOID data)
  function DOSVM_ProcessConsole (line 342) | static void DOSVM_ProcessConsole(void)
  function DOSVM_ProcessMessage (line 383) | static void DOSVM_ProcessMessage(MSG *msg)
  function DOSVM_Wait (line 420) | void DOSVM_Wait( CONTEXT *waitctx )
  function DWORD (line 496) | DWORD DOSVM_Loop( HANDLE hThread )
  function LONG (line 560) | static LONG WINAPI exception_handler(EXCEPTION_POINTERS *eptr)
  function INT (line 606) | INT DOSVM_Enter( CONTEXT *context )
  function DOSVM_PIC_ioport_out (line 629) | void DOSVM_PIC_ioport_out( WORD port, BYTE val)
  function INT (line 681) | INT DOSVM_Enter( CONTEXT *context )
  function DOSVM_Wait (line 690) | void DOSVM_Wait( CONTEXT *waitctx ) { }
  function DOSVM_PIC_ioport_out (line 695) | void DOSVM_PIC_ioport_out( WORD port, BYTE val) {}
  function DOSVM_QueueEvent (line 700) | void DOSVM_QueueEvent( INT irq, INT priority, DOSRELAY relay, LPVOID data)
  function DOSVM_AcknowledgeIRQ (line 720) | void WINAPI DOSVM_AcknowledgeIRQ( CONTEXT *context )
  function LPVOID (line 751) | static LPVOID DOSVM_AllocUMB( DWORD size )
  function WORD (line 797) | static WORD alloc_selector( void *base, DWORD size, unsigned char flags )
  function LPVOID (line 822) | static LPVOID DOSVM_AllocCodeUMB( DWORD size, WORD *segment, WORD *selec...
  function LPVOID (line 843) | LPVOID DOSVM_AllocDataUMB( DWORD size, WORD *segment, WORD *selector )
  function DOSVM_InitSegments (line 863) | void DOSVM_InitSegments(void)

FILE: krnl386/error.c
  function SetLastError16 (line 247) | void WINAPI SetLastError16( DWORD error )
  function DWORD (line 256) | DWORD WINAPI GetLastError16(void)
  function VOID (line 265) | VOID WINAPI LogError16(UINT16 uErr, LPVOID lpvInfo)
  function LogParamError16 (line 274) | void WINAPI LogParamError16(UINT16 uErr, FARPROC16 lpfn, LPVOID lpvParam)
  function HandleParamError (line 285) | void WINAPI HandleParamError( CONTEXT *context )

FILE: krnl386/file.c
  function BOOL (line 68) | BOOL can_write_directory(LPCSTR path)
  function BOOL (line 98) | BOOL is_readonly_directory(LPCSTR path)
  function LPCSTR (line 107) | __declspec(dllexport) LPCSTR RedirectDriveRoot(LPCSTR path, LPSTR to, si...
  function UnredirectDriveRoot (line 173) | void UnredirectDriveRoot(LPSTR buf, SIZE_T buf_len)
  function LPCSTR (line 196) | __declspec(dllexport) LPCSTR RedirectSystemDir(LPCSTR path, LPSTR to, si...
  function LPWSTR (line 247) | static LPWSTR strdupAtoW(LPCSTR str)
  function LPWSTR (line 258) | static LPWSTR strdupOEMtoW(LPCSTR str)
  function LPCSTR (line 269) | static LPCSTR strdupWtoOEM(LPCWSTR str)
  function HANDLE (line 283) | static HANDLE *FILE_GetTable()
  function FILE_CloseAll (line 297) | void FILE_CloseAll()
  function FILE_InitProcessDosHandles (line 314) | static void FILE_InitProcessDosHandles( void )
  function HANDLE (line 348) | HANDLE WINAPI DosFileHandleToWin32Handle( HFILE handle )
  function HFILE (line 371) | HFILE WINAPI Win32HandleToDosFileHandle( HANDLE handle )
  function BOOL16 (line 400) | BOOL16 WINAPI DeleteDosFileHandle( HANDLE handle )
  function UINT16 (line 419) | UINT16 WINAPI GetProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_v...
  function enum_ini_font (line 424) | int CALLBACK enum_ini_font(const LOGFONT *lf, const TEXTMETRIC *tm, DWOR...
  function INT16 (line 433) | INT16 WINAPI GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR de...
  function BOOL16 (line 491) | BOOL16 WINAPI WriteProfileString16( LPCSTR section, LPCSTR entry,
  function LPCSTR (line 563) | LPCSTR krnl386_search_executable_file(LPCSTR lpFile, LPSTR buf, SIZE_T s...
  function HANDLE (line 615) | static HANDLE create_file_OF( LPCWSTR path, INT mode )
  function HFILE16 (line 651) | HFILE16 WINAPI WIN16_OpenFile16( LPCSTR name, SEGPTR ofs, UINT16 mode )
  function HFILE16 (line 657) | HFILE16 WINAPI OpenFile16( LPCSTR name, OFSTRUCT *ofs, UINT16 mode )
  function HFILE16 (line 916) | HFILE16 WINAPI _lclose16( HFILE16 hFile )
  function HFILE16 (line 933) | HFILE16 WINAPI _lcreat16( LPCSTR path, INT16 attr )
  function LONG (line 944) | LONG WINAPI _llseek16( HFILE16 hFile, LONG lOffset, INT16 nOrigin )
  function HFILE16 (line 970) | HFILE16 WINAPI _lopen16( LPCSTR path, INT16 mode )
  function UINT16 (line 982) | UINT16 WINAPI _lread16( HFILE16 hFile, LPVOID buffer, UINT16 count )
  function UINT16 (line 991) | UINT16 WINAPI _lwrite16( HFILE16 hFile, LPCSTR buffer, UINT16 count )
  function LONG (line 999) | LONG WINAPI WIN16_hread( HFILE16 hFile, SEGPTR buffer, LONG count )
  function UINT16 (line 1026) | UINT16 WINAPI WIN16_lread( HFILE16 hFile, SEGPTR buffer, UINT16 count )
  function LONG (line 1035) | LONG WINAPI _hwrite16( HFILE16 hFile, LPCSTR buffer, LONG count )
  function UINT (line 1051) | UINT WINAPI GetTempDrive( BYTE ignored )
  function UINT16 (line 1066) | UINT16 WINAPI GetTempFileName16( BYTE drive, LPCSTR prefix, UINT16 unique,
  type ini_redirect_data (line 1172) | struct ini_redirect_data
  function system_ini_keyboard_type (line 1182) | int system_ini_keyboard_type()
  function system_ini_keyboard_subtype (line 1186) | int system_ini_keyboard_subtype()
  function system_init_boot_description_codepage (line 1258) | int system_init_boot_description_codepage()
  type ini_redirect_data (line 1265) | struct ini_redirect_data
  function UINT16 (line 1425) | UINT16 WINAPI GetPrivateProfileInt16( LPCSTR section, LPCSTR entry,
  function RedirectPrivateProfileStringWindowsDir (line 1476) | static void RedirectPrivateProfileStringWindowsDir(LPCSTR filename, LPCS...
  function BOOL (line 1489) | static BOOL append_ini_section(LPSTR data, SIZE_T *buf_pos, SIZE_T len, ...
  function construct_redirected_ini_section (line 1498) | static int construct_redirected_ini_section(LPCSTR section, LPSTR data, ...
  function INT16 (line 1536) | INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry,
  function BOOL16 (line 1681) | static BOOL16 check_write_profile_error(LPCSTR filename, DWORD error)
  function BOOL16 (line 1699) | BOOL16 WINAPI WritePrivateProfileString16( LPCSTR section, LPCSTR entry,
  function UINT16 (line 1715) | UINT16 WINAPI GetWindowsDirectory16( LPSTR path, UINT16 count )
  function UINT16 (line 1730) | UINT16 WINAPI GetSystemDirectory16( LPSTR path, UINT16 count )
  function UINT16 (line 1760) | UINT16 WINAPI GetDriveType16( UINT16 drive ) /* [in] number (NOT letter)...
  function WORD (line 1778) | WORD WINAPI GetProfileSectionNames16(LPSTR buffer, WORD size)
  function WORD (line 1788) | WORD WINAPI GetPrivateProfileSectionNames16( LPSTR buffer, WORD size,
  function BOOL16 (line 1798) | BOOL16 WINAPI CreateDirectory16( LPCSTR path, LPVOID dummy )
  function BOOL16 (line 1807) | BOOL16 WINAPI RemoveDirectory16( LPCSTR path )
  function BOOL16 (line 1816) | BOOL16 WINAPI DeleteFile16( LPCSTR path )
  function UINT16 (line 1825) | UINT16 WINAPI SetHandleCount16( UINT16 count )
  function WORD (line 1834) | WORD WINAPI GetShortPathName16( LPCSTR longpath, LPSTR shortpath, WORD l...
  function WriteOutProfiles16 (line 1843) | void WINAPI WriteOutProfiles16(void)
  function BOOL16 (line 1852) | BOOL16 WINAPI WritePrivateProfileStruct16 (LPCSTR section, LPCSTR key,
  function BOOL16 (line 1865) | BOOL16 WINAPI GetPrivateProfileStruct16(LPCSTR section, LPCSTR key,
  function UINT16 (line 1878) | UINT16 WINAPI GetCurrentDirectory16( UINT16 buflen, LPSTR buf )
  function BOOL16 (line 1887) | BOOL16 WINAPI SetCurrentDirectory16( LPCSTR dir )
  function HANDLE16 (line 1917) | HANDLE16 WINAPI FindFirstFile16( LPCSTR path, WIN32_FIND_DATAA *data )
  function BOOL16 (line 1939) | BOOL16 WINAPI FindNextFile16( HANDLE16 handle, WIN32_FIND_DATAA *data )
  function BOOL16 (line 1958) | BOOL16 WINAPI FindClose16( HANDLE16 handle )
  function BOOL16 (line 1977) | BOOL16 WINAPI WritePrivateProfileSection16( LPCSTR section,
  function BOOL16 (line 1987) | BOOL16 WINAPI WriteProfileSection16( LPCSTR section, LPCSTR keys_n_values)
  function INT16 (line 1996) | INT16 WINAPI GetPrivateProfileSection16( LPCSTR section, LPSTR buffer,
  function INT16 (line 2006) | INT16 WINAPI GetProfileSection16( LPCSTR section, LPSTR buffer, UINT16 l...
  function DWORD (line 2015) | DWORD WINAPI GetFileAttributes16( LPCSTR name )
  function BOOL16 (line 2024) | BOOL16 WINAPI SetFileAttributes16( LPCSTR lpFileName, DWORD attributes )
  function BOOL16 (line 2033) | BOOL16 WINAPI GetDiskFreeSpace16( LPCSTR root, LPDWORD cluster_sectors,
  function FARPROC16 (line 2044) | FARPROC16 WINAPI FileCDR16(FARPROC16 x)

FILE: krnl386/fpu.c
  function DOSVM_Int34Handler (line 43) | void WINAPI DOSVM_Int34Handler(CONTEXT *context)
  function DOSVM_Int35Handler (line 58) | void WINAPI DOSVM_Int35Handler(CONTEXT *context)
  function DOSVM_Int36Handler (line 73) | void WINAPI DOSVM_Int36Handler(CONTEXT *context)
  function DOSVM_Int37Handler (line 88) | void WINAPI DOSVM_Int37Handler(CONTEXT *context)
  function DOSVM_Int38Handler (line 106) | void WINAPI DOSVM_Int38Handler(CONTEXT *context)
  function DOSVM_Int39Handler (line 121) | void WINAPI DOSVM_Int39Handler(CONTEXT *context)
  function DOSVM_Int3aHandler (line 136) | void WINAPI DOSVM_Int3aHandler(CONTEXT *context)
  function DOSVM_Int3bHandler (line 151) | void WINAPI DOSVM_Int3bHandler(CONTEXT *context)
  function DOSVM_Int3cHandler (line 174) | void WINAPI DOSVM_Int3cHandler(CONTEXT *context)
  function DOSVM_Int3dHandler (line 188) | void WINAPI DOSVM_Int3dHandler(CONTEXT *context)
  function DOSVM_Int3eHandler (line 206) | void WINAPI DOSVM_Int3eHandler(CONTEXT *context)
  function FPU_ModifyCode (line 222) | static void FPU_ModifyCode(CONTEXT *context, BYTE Opcode)

FILE: krnl386/global.c
  type GLOBALARENA (line 50) | typedef struct
  function HANDLE (line 85) | static HANDLE get_win16_heap(void)
  function clear_sel_table (line 95) | static void clear_sel_table(WORD sel, WORD selcount)
  function set_sel_table (line 102) | static void set_sel_table(WORD sel, WORD selcount)
  function GLOBALARENA (line 116) | static GLOBALARENA *GLOBAL_GetArena( WORD sel, WORD selcount )
  function debug_handles (line 143) | void debug_handles(void)
  function HGLOBAL16 (line 163) | HGLOBAL16 GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
  function BOOL16 (line 223) | BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle )
  function BOOL16 (line 241) | BOOL16 GLOBAL_MoveBlock( HGLOBAL16 handle, void *ptr, DWORD size )
  function HGLOBAL16 (line 264) | HGLOBAL16 GLOBAL_Alloc( UINT16 flags, DWORD size, HGLOBAL16 hOwner, unsi...
  function WORD (line 304) | WORD GLOBAL_GetSegNum(HGLOBAL16 hg)
  function GLOBAL_SetSeg (line 309) | void GLOBAL_SetSeg(HGLOBAL16 hg, WORD wSeg, WORD type)
  function HGLOBAL (line 315) | HGLOBAL GLOBAL_GetLink(HGLOBAL16 hg)
  function GLOBAL_SetLink (line 320) | void GLOBAL_SetLink(HGLOBAL16 hg16, HGLOBAL hg)
  function HGLOBAL16 (line 325) | HGLOBAL16 GLOBAL_FindLink(HGLOBAL hg)
  function HGLOBAL16 (line 347) | HGLOBAL16 WINAPI GlobalAlloc16(
  function HGLOBAL16 (line 377) | HGLOBAL16 WINAPI GlobalReAlloc16(
  function check_gptr (line 564) | static void check_gptr(HANDLE src)
  function HGLOBAL16 (line 588) | HGLOBAL16 WINAPI GlobalFree16(
  function SEGPTR (line 620) | SEGPTR WINAPI K32WOWGlobalLock16( HGLOBAL16 handle )
  function WIN16_GlobalAlloc16 (line 782) | void WINAPI WIN16_GlobalAlloc16(UINT16 flags, DWORD size, CONTEXT *context)
  function SEGPTR (line 793) | SEGPTR WINAPI WIN16_GlobalLock16(HGLOBAL16 handle)
  function HGLOBAL16 (line 802) | HGLOBAL16 WINAPI WIN16_GlobalReAlloc16(HGLOBAL16 handle, DWORD size, UIN...
  function DWORD (line 807) | DWORD WINAPI WIN16_GlobalSize16(HGLOBAL16 handle)
  function DWORD (line 815) | DWORD WINAPI WIN16_GlobalFlags16(HGLOBAL16 handle)
  function DWORD (line 820) | DWORD WINAPI WIN16_GlobalFree16(HGLOBAL16 handle)
  function DWORD (line 828) | DWORD WINAPI WIN16_GlobalUnlock16(HGLOBAL16 handle)
  function LPVOID (line 854) | LPVOID WINAPI GlobalLock16(
  function BOOL16 (line 877) | BOOL16 WINAPI GlobalUnlock16(
  function BOOL16 (line 892) | BOOL16 WINAPI WIN32_GlobalUnlock16(
  function GlobalChangeLockCount16 (line 913) | void WINAPI GlobalChangeLockCount16( HGLOBAL16 handle, INT16 delta, CONT...
  function DWORD (line 933) | DWORD WINAPI GlobalSize16(
  function DWORD (line 956) | DWORD WINAPI GlobalHandle16(
  function DWORD (line 973) | DWORD WINAPI GlobalHandleNoRIP16( WORD sel )
  function UINT16 (line 997) | UINT16 WINAPI GlobalFlags16(
  function HGLOBAL16 (line 1017) | HGLOBAL16 WINAPI LockSegment16( HGLOBAL16 handle )
  function UnlockSegment16 (line 1034) | void WINAPI UnlockSegment16( HGLOBAL16 handle )
  function DWORD (line 1050) | DWORD WINAPI GlobalCompact16( DWORD desired )
  function GlobalFreeAll16 (line 1059) | void WINAPI GlobalFreeAll16( HGLOBAL16 owner )
  function SEGPTR (line 1077) | SEGPTR WINAPI GlobalWire16( HGLOBAL16 handle )
  function BOOL16 (line 1087) | BOOL16 WINAPI GlobalUnWire16( HGLOBAL16 handle )
  function LONG (line 1096) | LONG WINAPI SetSwapAreaSize16( WORD size )
  function HGLOBAL16 (line 1106) | HGLOBAL16 WINAPI GlobalLRUOldest16( HGLOBAL16 handle )
  function HGLOBAL16 (line 1117) | HGLOBAL16 WINAPI GlobalLRUNewest16( HGLOBAL16 handle )
  function DWORD (line 1128) | DWORD WINAPI GetFreeSpace16( UINT16 wFlags )
  function DWORD (line 1143) | DWORD WINAPI GlobalDOSAlloc16(
  function WORD (line 1176) | WORD WINAPI GlobalDOSFree16(
  function WORD (line 1196) | WORD WINAPI GlobalPageLock16( HGLOBAL16 handle )
  function WORD (line 1211) | WORD WINAPI GlobalPageUnlock16( HGLOBAL16 handle )
  function WORD (line 1226) | WORD WINAPI GlobalFix16( HGLOBAL16 handle )
  function GlobalUnfix16 (line 1244) | void WINAPI GlobalUnfix16( HGLOBAL16 handle )
  function FarSetOwner16 (line 1259) | void WINAPI FarSetOwner16( HGLOBAL16 handle, HANDLE16 hOwner )
  function HANDLE16 (line 1272) | HANDLE16 WINAPI FarGetOwner16( HGLOBAL16 handle )
  function DWORD (line 1292) | DWORD WINAPI GlobalMasterHandle16(void)
  function WORD (line 1324) | WORD WINAPI GlobalHandleToSel16( HGLOBAL16 handle )
  function DWORD (line 1343) | DWORD WINAPI GetFreeMemInfo16(void)
  function A20Proc16 (line 1356) | void WINAPI A20Proc16( WORD unused )
  function DWORD (line 1364) | DWORD WINAPI LimitEMSPages16( DWORD unused )
  function DibMapGlobalMemory (line 1369) | void WINAPI DibMapGlobalMemory(WORD sel, void *base, DWORD size)
  function DibUnmapGlobalMemory (line 1386) | void WINAPI DibUnmapGlobalMemory(void *base, DWORD size)
  function GlobalMapInternal (line 1406) | void WINAPI GlobalMapInternal(WORD sel, void *base, DWORD size)

FILE: krnl386/instr.c
  function add_stack (line 47) | static inline void add_stack( CONTEXT *context, int offset )
  type idtr (line 70) | struct idtr
  function get_idtr (line 79) | static inline struct idtr get_idtr(void)
  function BOOL (line 103) | static BOOL INSTR_ReplaceSelector( CONTEXT *context, WORD *sel )
  function store_reg_word (line 116) | static void store_reg_word( CONTEXT *context, BYTE regmodrm, const BYTE ...
  function store_reg_byte (line 156) | static void store_reg_byte( CONTEXT *context, BYTE regmodrm, const BYTE ...
  function BYTE (line 176) | static BYTE *INSTR_GetOperandAddr( CONTEXT *context, BYTE *instr,
  function BOOL (line 336) | static BOOL INSTR_EmulateLDS( CONTEXT *context, BYTE *instr, int long_op,
  function DWORD (line 380) | static DWORD INSTR_inport( WORD port, int size, CONTEXT *context )
  function INSTR_outport (line 411) | static void INSTR_outport( WORD port, int size, DWORD val, CONTEXT *cont...
  function DWORD (line 442) | DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
  function LONG (line 893) | LONG CALLBACK INSTR_vectored_handler( EXCEPTION_POINTERS *ptrs )
  function DOS3Call (line 912) | void WINAPI DOS3Call( CONTEXT *context )
  function NetBIOSCall16 (line 921) | void WINAPI NetBIOSCall16( CONTEXT *context )
  function FARPROC16 (line 930) | FARPROC16 WINAPI GetSetKernelDOSProc16( FARPROC16 DosProc )

FILE: krnl386/int09.c
  function DOSVM_Int09UpdateKbdStatusFlags (line 49) | static void DOSVM_Int09UpdateKbdStatusFlags(BYTE scan, BOOL extended, BI...
  function DOSVM_Int09Handler (line 150) | void WINAPI DOSVM_Int09Handler( CONTEXT *context )
  function KbdRelay (line 213) | static void KbdRelay( CONTEXT *context, void *data )
  function DOSVM_Int09SendScan (line 227) | void DOSVM_Int09SendScan( BYTE scan, BYTE ascii )
  function BYTE (line 240) | BYTE DOSVM_Int09ReadScan( BYTE*ascii )

FILE: krnl386/int10.c
  type INT10_HEAP (line 60) | typedef struct _INT10_HEAP {
  type _ModeInfoBlock (line 84) | struct _ModeInfoBlock {
  function INT10_FillControllerInformation (line 152) | static void INT10_FillControllerInformation( BYTE *buffer )
  function BOOL (line 238) | static BOOL INT10_FillModeInformation( struct _ModeInfoBlock *mib, WORD ...
  function INT10_FillStateInformation (line 510) | static void INT10_FillStateInformation( BYTE *buffer, BIOSDATA *data )
  function INT10_HEAP (line 631) | static INT10_HEAP *INT10_GetHeap( void )
  function BOOL (line 698) | static BOOL INT10_SetVideoMode( BIOSDATA *data, WORD mode )
  function INT10_GetCursorPos (line 764) | static void INT10_GetCursorPos(BIOSDATA*data,unsigned page,unsigned*X,un...
  function INT10_SetCursorPos (line 774) | static void INT10_SetCursorPos(BIOSDATA*data,unsigned page,unsigned X,un...
  function INT10_InitializeVideoMode (line 787) | static void INT10_InitializeVideoMode( BIOSDATA *data )
  function INT10_HandleVESA (line 815) | static void INT10_HandleVESA( CONTEXT *context )
  function DOSVM_Int10Handler (line 980) | void WINAPI DOSVM_Int10Handler( CONTEXT *context )
  function DOSVM_PutChar (line 1450) | void DOSVM_PutChar( BYTE ascii )

FILE: krnl386/int13.c
  function INT13_SetStatus (line 61) | static void INT13_SetStatus( CONTEXT *context, BYTE status )
  function INT13_ReadFloppyParams (line 79) | static void INT13_ReadFloppyParams( CONTEXT *context )
  function DOSVM_Int13Handler (line 187) | void WINAPI DOSVM_Int13Handler( CONTEXT *context )

FILE: krnl386/int15.c
  function DOSVM_Int15Handler (line 34) | void WINAPI DOSVM_Int15Handler( CONTEXT *context )

FILE: krnl386/int16.c
  function DOSVM_Int16Handler (line 50) | void WINAPI DOSVM_Int16Handler( CONTEXT *context )
  function BOOL (line 163) | BOOL DOSVM_Int16ReadChar(BYTE *ascii, BYTE *scan, CONTEXT *waitctx)
  function BOOL (line 198) | BOOL DOSVM_Int16AddChar(BYTE ascii,BYTE scan)

FILE: krnl386/int21.c
  type INT21_DPB (line 81) | typedef struct _INT21_DPB {
  type INT21_HEAP (line 117) | typedef struct _INT21_HEAP {
  type FCB (line 149) | struct FCB {
  type XFCB (line 169) | struct XFCB {
  type FINDFILE_DTA (line 177) | typedef struct
  type FINDFILE_FCB (line 193) | typedef struct
  type DOS_DIRENTRY_LAYOUT (line 202) | typedef struct
  type magic_device (line 271) | struct magic_device
  type magic_device (line 284) | struct magic_device
  function BYTE (line 316) | static BYTE INT21_GetCurrentDrive(void)
  function BYTE (line 337) | static BYTE INT21_MapDrive( BYTE drive )
  function INT21_SetCurrentDrive (line 362) | static void INT21_SetCurrentDrive( BYTE drive )
  function BOOL (line 379) | static BOOL INT21_ReadChar( BYTE *input, CONTEXT *waitctx )
  function WORD (line 412) | static WORD INT21_GetSystemCountryCode( void )
  type country_info_t (line 423) | typedef struct {
  function INT21_FillCountryInformation (line 444) | static int INT21_FillCountryInformation( BYTE *dst, int size )
  function msdos_dbcs_table_update (line 499) | void msdos_dbcs_table_update(LPBYTE tbl)
  function INT21_FillHeap (line 535) | static void INT21_FillHeap( INT21_HEAP *heap )
  function INT21_HEAP (line 599) | static INT21_HEAP *INT21_GetHeapPointer( void )
  function WORD (line 627) | static WORD INT21_GetHeapSelector( CONTEXT *context )
  function BOOL (line 645) | static BOOL INT21_FillDrivePB( BYTE drive )
  function BOOL (line 727) | static BOOL INT21_GetCurrentDirectory( CONTEXT *context, BOOL islong )
  function BOOL (line 853) | static BOOL INT21_SetCurrentDirectory( CONTEXT *context )
  function HANDLE (line 892) | static HANDLE INT21_CreateMagicDeviceHandle( LPCWSTR name )
  function HANDLE (line 942) | static HANDLE INT21_OpenMagicDevice( LPCWSTR name, DWORD access )
  function BOOL (line 987) | static BOOL INT21_CreateFile( CONTEXT *context,
  function WORD (line 1222) | static WORD INT21_BufferedInput( CONTEXT *context, BYTE *ptr, WORD capac...
  function BYTE (line 1275) | static BYTE *INT21_GetCurrentDTA( CONTEXT *context )
  function INT21_OpenFileUsingFCB (line 1302) | static void INT21_OpenFileUsingFCB( CONTEXT *context )
  function INT21_CloseFileUsingFCB (line 1401) | static void INT21_CloseFileUsingFCB( CONTEXT *context )
  function INT21_SequentialReadFromFCB (line 1446) | static void INT21_SequentialReadFromFCB( CONTEXT *context )
  function INT21_SequentialWriteToFCB (line 1526) | static void INT21_SequentialWriteToFCB( CONTEXT *context )
  function INT21_ReadRandomRecordFromFCB (line 1602) | static void INT21_ReadRandomRecordFromFCB( CONTEXT *context )
  function INT21_WriteRandomRecordToFCB (line 1675) | static void INT21_WriteRandomRecordToFCB( CONTEXT *context )
  function INT21_RandomBlockReadFromFCB (line 1750) | static void INT21_RandomBlockReadFromFCB( CONTEXT *context )
  function INT21_RandomBlockWriteToFCB (line 1841) | static void INT21_RandomBlockWriteToFCB( CONTEXT *context )
  function BOOL (line 1910) | static BOOL INT21_CreateDirectory( CONTEXT *context )
  function INT21_ExtendedCountryInformation (line 1950) | static void INT21_ExtendedCountryInformation( CONTEXT *context )
  function BOOL (line 2081) | static BOOL INT21_FileAttributes( CONTEXT *context,
  function BOOL (line 2341) | static BOOL INT21_FileDateTime( CONTEXT *context )
  function INT21_GetPSP (line 2448) | static void INT21_GetPSP( CONTEXT *context )
  function setword (line 2462) | static inline void setword( BYTE *ptr, WORD w )
  function CreateBPB (line 2468) | static void CreateBPB(int drive, BYTE *data, BOOL16 limited)
  function DWORD (line 2514) | static inline DWORD INT21_Ioctl_CylHeadSect2Lin(DWORD cyl, WORD head, WO...
  function INT21_Ioctl_Block (line 2526) | static void INT21_Ioctl_Block( CONTEXT *context )
  function INT21_IoctlScsiMgrHandler (line 2748) | static void INT21_IoctlScsiMgrHandler( CONTEXT *context )
  function INT21_IoctlHPScanHandler (line 2782) | static void INT21_IoctlHPScanHandler( CONTEXT *context )
  function INT21_Ioctl_Char (line 2813) | static void INT21_Ioctl_Char( CONTEXT *context )
  function INT21_Ioctl (line 2922) | static void INT21_Ioctl( CONTEXT *context )
  function BOOL (line 3013) | static BOOL INT21_Fat32( CONTEXT *context )
  function INT21_ConvertFindDataWtoA (line 3112) | static void INT21_ConvertFindDataWtoA(WIN32_FIND_DATAA *dataA,
  function INT21_LongFilename (line 3132) | static void INT21_LongFilename( CONTEXT *context )
  function BOOL (line 3432) | static BOOL INT21_RenameFile( CONTEXT *context )
  function BOOL (line 3455) | static BOOL INT21_NetworkFunc (CONTEXT *context)
  function INT21_GetDiskSerialNumber (line 3492) | static int INT21_GetDiskSerialNumber( CONTEXT *context )
  function BOOL (line 3517) | static BOOL INT21_SetDiskSerialNumber( CONTEXT *context )
  function BOOL (line 3543) | static BOOL INT21_GetFreeDiskSpace( CONTEXT *context )
  function BOOL (line 3618) | static BOOL INT21_GetDriveAllocInfo( CONTEXT *context, BYTE drive )
  function INT21_GetExtendedError (line 3637) | static void INT21_GetExtendedError( CONTEXT *context )
  function BOOL (line 3746) | static BOOL INT21_CreateTempFile( CONTEXT *context )
  function BOOL (line 3785) | static BOOL INT21_ToDosFCBFormat( LPCWSTR name, LPWSTR buffer )
  function BOOL (line 3881) | static BOOL INT21_FindFirst( CONTEXT *context )
  function BOOL (line 3931) | static BOOL match_short(LPCWSTR shortW, LPCSTR maskA)
  function INT21_FindHelper (line 3943) | static unsigned INT21_FindHelper(LPCWSTR fullPath, unsigned drive, unsig...
  function BOOL (line 4053) | static BOOL INT21_FindNext( CONTEXT *context )
  function BOOL (line 4110) | static BOOL INT21_FindFirstFCB( CONTEXT *context )
  function BOOL (line 4134) | static BOOL INT21_FindNextFCB( CONTEXT *context )
  function INT21_ParseFileNameIntoFCB (line 4206) | static void INT21_ParseFileNameIntoFCB( CONTEXT *context )
  function BOOL (line 4242) | static BOOL     INT21_Dup2(HFILE16 hFile1, HFILE16 hFile2)
  function DOSVM_Int21Handler (line 4285) | void WINAPI DOSVM_Int21Handler( CONTEXT *context )

FILE: krnl386/int25.c
  function BOOL (line 41) | BOOL DOSVM_RawRead(BYTE drive, DWORD begin, DWORD nr_sect, BYTE *dataptr...
  function DOSVM_Int25Handler (line 83) | void WINAPI DOSVM_Int25Handler( CONTEXT *context )

FILE: krnl386/int26.c
  function BOOL (line 40) | BOOL DOSVM_RawWrite(BYTE drive, DWORD begin, DWORD nr_sect, BYTE *datapt...
  function DOSVM_Int26Handler (line 72) | void WINAPI DOSVM_Int26Handler( CONTEXT *context )

FILE: krnl386/int2f.c
  type CDROM_DEVICE_HEADER (line 45) | typedef struct
  type CDROM_HEAP (line 54) | typedef struct
  function DOSVM_Int2fHandler (line 71) | void WINAPI DOSVM_Int2fHandler( CONTEXT *context )
  function do_int2f_16 (line 348) | static void do_int2f_16( CONTEXT *context )
  function MSCDEX_Dump (line 458) | static void    MSCDEX_Dump(char* pfx, BYTE* req, int dorealmode)
  function MSCDEX_StoreMSF (line 500) | static void    MSCDEX_StoreMSF(DWORD frame, BYTE* val)
  function BOOL (line 508) | static BOOL is_cdrom(int drive)
  function CDROM_FillHeap (line 521) | static void CDROM_FillHeap( CDROM_HEAP *heap )
  function CDROM_HEAP (line 545) | static CDROM_HEAP *CDROM_GetHeap( void )
  function MSCDEX_Request (line 567) | static void MSCDEX_Request(BYTE *driver_request, BOOL dorealmode)
  function MSCDEX_Handler (line 977) | static void MSCDEX_Handler(CONTEXT* context)
  function do_lret (line 1085) | static void do_lret(CONTEXT*ctx)
  function cdrom_strategy (line 1094) | static void WINAPI cdrom_strategy(CONTEXT*ctx)
  function cdrom_interrupt (line 1100) | static void WINAPI cdrom_interrupt(CONTEXT*ctx)
  function MSCDEX_InstallCDROM (line 1115) | void MSCDEX_InstallCDROM(void)

FILE: krnl386/int31.c
  type REALMODECALL (line 41) | typedef struct
  type RMCB (line 62) | typedef struct tagRMCB {
  type MOVEOFS (line 76) | typedef struct {
  type MOVESTRUCT (line 81) | typedef struct {
  function BOOL (line 94) | BOOL DOSVM_IsDos32(void)
  function WORD (line 105) | static WORD alloc_pm_selector( WORD seg, unsigned char flags )
  function LONG (line 127) | static LONG WINAPI dpmi_exception_handler(EXCEPTION_POINTERS *eptr)
  function INT_GetRealModeContext (line 154) | static void INT_GetRealModeContext( REALMODECALL *call, CONTEXT *context )
  function INT_SetRealModeContext (line 178) | static void INT_SetRealModeContext( REALMODECALL *call, CONTEXT *context...
  function LPVOID (line 206) | static LPVOID DPMI_xalloc( DWORD len )
  function DPMI_xfree (line 259) | static void DPMI_xfree( LPVOID ptr )
  function LPVOID (line 269) | static LPVOID DPMI_xrealloc( LPVOID ptr, DWORD newsize )
  function DPMI_CallRMCBProc (line 382) | static void DPMI_CallRMCBProc( CONTEXT *context, RMCB *rmcb, WORD flag )

FILE: krnl386/int33.c
  function INT33_ResetMouse (line 53) | static void INT33_ResetMouse( CONTEXT *context )
  function DOSVM_Int33Handler (line 78) | void WINAPI DOSVM_Int33Handler( CONTEXT *context )
  type MCALLDATA (line 202) | typedef struct {
  function MouseRelay (line 207) | static void MouseRelay(CONTEXT *context,void *mdata)
  function QueueMouseRelay (line 230) | static void QueueMouseRelay(DWORD mx, DWORD my, WORD mask)
  function DOSVM_Int33Message (line 293) | void DOSVM_Int33Message(UINT message,WPARAM wParam,LPARAM lParam)
  function DOSVM_Int33Console (line 337) | void DOSVM_Int33Console(MOUSE_EVENT_RECORD *record)

FILE: krnl386/int67.c
  function EMS_init (line 89) | static void EMS_init(void)
  function EMS_alloc (line 112) | static void EMS_alloc( CONTEXT *context )
  function EMS_access_name (line 143) | static void EMS_access_name( CONTEXT *context )
  function BYTE (line 176) | static BYTE EMS_map( WORD physical_page, WORD new_hindex, WORD new_logic...
  function EMS_map_multiple (line 223) | static void EMS_map_multiple( CONTEXT *context )
  function EMS_free (line 251) | static void EMS_free( CONTEXT *context )
  function EMS_save_context (line 285) | static void EMS_save_context( CONTEXT *context )
  function EMS_restore_context (line 304) | static void EMS_restore_context( CONTEXT *context )
  function DOSVM_Int67Handler (line 327) | void WINAPI DOSVM_Int67Handler( CONTEXT *context )
  function EMS_Ioctl_Handler (line 464) | void EMS_Ioctl_Handler( CONTEXT *context )

FILE: krnl386/interrupts.c
  function INTPROC (line 94) | INTPROC DOSVM_SetBuiltinVector(BYTE intnum, INTPROC handler)
  function FARPROC16 (line 113) | static FARPROC16* DOSVM_GetRMVector( BYTE intnum )
  function BOOL (line 131) | static BOOL DOSVM_IsIRQ( BYTE intnum )
  function DOSVM_DefaultHandler (line 149) | static void WINAPI DOSVM_DefaultHandler( CONTEXT *context )
  function INTPROC (line 159) | static INTPROC DOSVM_GetBuiltinHandler( BYTE intnum )
  function DOSVM_IntProcRelay (line 181) | static void DOSVM_IntProcRelay( CONTEXT *context, LPVOID data )
  function DOSVM_PrepareIRQ (line 192) | static void DOSVM_PrepareIRQ( CONTEXT *context, BOOL isbuiltin )
  function DOSVM_PushFlags (line 223) | static void DOSVM_PushFlags( CONTEXT *context, BOOL islong, BOOL isstub )
  function BOOL (line 275) | BOOL DOSVM_EmulateInterruptPM( CONTEXT *context, BYTE intnum )
  function DOSVM_HardwareInterruptPM (line 367) | void DOSVM_HardwareInterruptPM( CONTEXT *context, BYTE intnum )
  function BOOL (line 464) | BOOL DOSVM_EmulateInterruptRM( CONTEXT *context, BYTE intnum )
  function DOSVM_HardwareInterruptRM (line 524) | void DOSVM_HardwareInterruptRM( CONTEXT *context, BYTE intnum )
  function FARPROC16 (line 569) | FARPROC16 DOSVM_GetRMHandler( BYTE intnum )
  function DOSVM_SetRMHandler (line 580) | void DOSVM_SetRMHandler( BYTE intnum, FARPROC16 handler )
  function FARPROC16 (line 593) | FARPROC16 DOSVM_GetPMHandler16( BYTE intnum )
  function DOSVM_SetPMHandler16 (line 644) | void DOSVM_SetPMHandler16( BYTE intnum, FARPROC16 handler )
  function FARPROC48 (line 690) | FARPROC48 DOSVM_GetPMHandler48( BYTE intnum )
  function DOSVM_SetPMHandler48 (line 707) | void DOSVM_SetPMHandler48( BYTE intnum, FARPROC48 handler )
  function DOSVM_CallBuiltinHandler (line 720) | void DOSVM_CallBuiltinHandler( CONTEXT *context, BYTE intnum )
  function __wine_call_int_handler (line 736) | void __wine_call_int_handler( CONTEXT *context, BYTE intnum )
  function DOSVM_Int11Handler (line 779) | static void WINAPI DOSVM_Int11Handler( CONTEXT *context )
  function DOSVM_Int12Handler (line 829) | static void WINAPI DOSVM_Int12Handler( CONTEXT *context )
  function DOSVM_Int17Handler (line 840) | static void WINAPI DOSVM_Int17Handler( CONTEXT *context )
  function DOSVM_Int19Handler (line 867) | static void WINAPI DOSVM_Int19Handler( CONTEXT *context )
  function DOSVM_Int1aHandler (line 879) | static void WINAPI DOSVM_Int1aHandler( CONTEXT *context )
  function DOSVM_Int20Handler (line 979) | static void WINAPI DOSVM_Int20Handler( CONTEXT *context )
  function DOSVM_Int29Handler (line 995) | static void WINAPI DOSVM_Int29Handler( CONTEXT *context )
  function DOSVM_Int2aHandler (line 1007) | static void WINAPI DOSVM_Int2aHandler( CONTEXT *context )
  function DOSVM_Int41Handler (line 1023) | static void WINAPI DOSVM_Int41Handler( CONTEXT *context )
  function DOSVM_Int4bHandler (line 1067) | static void WINAPI DOSVM_Int4bHandler( CONTEXT *context )
  function DOSVM_Int5cHandler (line 1089) | static void WINAPI DOSVM_Int5cHandler( CONTEXT *context )
  function DOSVM_Int01Handler (line 1102) | static void WINAPI DOSVM_Int01Handler(CONTEXT *context)
  function DOSVM_Int03Handler (line 1124) | static void WINAPI DOSVM_Int03Handler(CONTEXT *context)
  function DOSVM_Int06Handler (line 1143) | static void WINAPI DOSVM_Int06Handler(CONTEXT *context)

FILE: krnl386/ioports.c
  function IO_FixCMOSCheckSum (line 169) | static void IO_FixCMOSCheckSum(void)
  function set_timer (line 203) | static void set_timer(unsigned timer)
  function WORD (line 233) | static WORD get_timer_val(unsigned timer)
  function set_IO_permissions (line 287) | static void set_IO_permissions(int val1, int val, char rw)
  function do_IO_port_init_read_or_write (line 310) | static void do_IO_port_init_read_or_write(const WCHAR *str, char rw)
  function BYTE (line 361) | static inline BYTE inb( WORD port )
  function WORD (line 368) | static inline WORD inw( WORD port )
  function DWORD (line 375) | static inline DWORD inl( WORD port )
  function outb (line 382) | static inline void outb( BYTE value, WORD port )
  function outw (line 387) | static inline void outw( WORD value, WORD port )
  function outl (line 392) | static inline void outl( DWORD value, WORD port )
  function IO_port_init (line 397) | static void IO_port_init(void)
  type PPDeviceStruct (line 451) | typedef struct _PPDEVICESTRUCT{
  function IO_pp_sort (line 462) | static int IO_pp_sort(const void *p1,const  void *p2)
  function IO_pp_init (line 473) | static char IO_pp_init(void)
  function IO_pp_do_access (line 632) | static int IO_pp_do_access(int idx,int ppctl, DWORD* res)
  function IO_pp_inp (line 657) | static int IO_pp_inp(int port, DWORD* res)
  function BOOL (line 693) | static BOOL IO_pp_outp(int port, DWORD* res)
  function DOSVM_setportcb (line 734) | void DOSVM_setportcb(OUTPROC outproc, INPROC inproc, int port, OUTPROC *...
  function DWORD (line 754) | DWORD DOSVM_inport( int port, int size, CONTEXT* ctx )
  function DOSVM_outport (line 970) | void DOSVM_outport( int port, int size, DWORD value, CONTEXT *ctx )

FILE: krnl386/kernel.c
  function thread_attach (line 46) | static void thread_attach(void)
  function thread_detach (line 62) | static void thread_detach(void)
  function redirect_current_dir (line 77) | static void redirect_current_dir()
  function LONG (line 104) | LONG CALLBACK fflush_vectored_handler(EXCEPTION_POINTERS *ptrs)
  function BOOL (line 118) | BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
  function BOOL (line 176) | BOOL WINAPI KERNEL_DllEntryPoint( DWORD reasion, HINSTANCE16 inst, WORD ds,
  function WORD (line 242) | WORD get_env_dos_version()
  function WORD (line 259) | WORD get_env_win_version()
  function DWORD (line 279) | DWORD WINAPI GetVersion16(void)
  function SEGPTR (line 341) | SEGPTR WINAPI KERNEL_AnsiNext16(SEGPTR current)
  function SEGPTR (line 349) | SEGPTR WINAPI KERNEL_AnsiPrev16( SEGPTR start, SEGPTR current )
  function SEGPTR (line 357) | SEGPTR WINAPI KERNEL_AnsiUpper16( SEGPTR strOrChar )
  function SEGPTR (line 376) | SEGPTR WINAPI KERNEL_AnsiLower16( SEGPTR strOrChar )
  function INT16 (line 395) | INT16 WINAPI KERNEL_lstrcmp16( LPCSTR str1, LPCSTR str2 )
  function SEGPTR (line 410) | SEGPTR WINAPI lstrcpy16( SEGPTR dst, LPCSTR src )
  function SEGPTR (line 419) | SEGPTR WINAPI lstrcat16( SEGPTR dst, LPCSTR src )
  function INT16 (line 428) | INT16 WINAPI lstrlen16( LPCSTR str )
  function OutputDebugString16 (line 436) | void WINAPI OutputDebugString16( LPCSTR str, CONTEXT *ctx )
  function BOOL (line 441) | static BOOL config_IAmNotNT()
  function DWORD (line 455) | DWORD WINAPI GetWinFlags16(void)
  function BOOL16 (line 477) | BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16 *v)
  function DebugBreak16 (line 500) | void WINAPI DebugBreak16( CONTEXT *context )
  function DebugFillBuffer (line 521) | void WINAPI DebugFillBuffer(LPSTR lpBuffer, WORD wBytes)
  function BOOL16 (line 531) | BOOL16 WINAPI DiagQuery16(void)
  function DiagOutput16 (line 541) | void WINAPI DiagOutput16(LPCSTR str)
  function hmemcpy16 (line 550) | void WINAPI hmemcpy16( LPVOID dst, LPCVOID src, LONG count )
  function SEGPTR (line 558) | SEGPTR WINAPI lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n )
  function SEGPTR (line 567) | SEGPTR WINAPI lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n )
  function BOOL16 (line 622) | BOOL16 WINAPI GetWinDebugInfo16(WINDEBUGINFO16 *lpwdi, UINT16 flags)
  function BOOL16 (line 634) | BOOL16 WINAPI SetWinDebugInfo16(WINDEBUGINFO16 *lpwdi)
  function INT16 (line 646) | INT16 WINAPI UnicodeToAnsi16( LPCWSTR src, LPSTR dst, INT16 codepage )
  function HANDLE (line 655) | HANDLE WINAPI VWin32_EventCreate(VOID)
  function VOID (line 664) | VOID WINAPI VWin32_EventDestroy(HANDLE event)
  function VOID (line 672) | VOID WINAPI VWin32_EventWait(HANDLE event)
  function VOID (line 685) | VOID WINAPI VWin32_EventSet(HANDLE event)
  function FARPROC (line 693) | FARPROC WINAPI GetProcAddress32_16( HMODULE hModule, LPCSTR function )
  function HANDLE (line 702) | HANDLE WINAPI CreateW32Event( BOOL manual_reset, BOOL initial_state )
  function BOOL (line 710) | BOOL WINAPI SetW32Event( HANDLE handle )
  function BOOL (line 718) | BOOL WINAPI ResetW32Event( HANDLE handle )
  function DWORD (line 726) | DWORD WINAPI WaitForSingleObject16( HANDLE handle, DWORD timeout )
  function DWORD (line 739) | DWORD WINAPI WaitForMultipleObjects16( DWORD count, const HANDLE *handles,
  function DWORD (line 753) | DWORD WINAPI GetCurrentThreadId16(void)
  function ExitProcess16 (line 760) | void WINAPI ExitProcess16( WORD status )
  function DWORD (line 769) | DWORD WINAPI GetCurrentProcessId16(void)
  function BOOL (line 777) | BOOL WINAPI CloseW32Handle( HANDLE handle )
  function HANDLE (line 785) | HANDLE WINAPI ConvertToGlobalHandle16( HANDLE handle )
  function DWORD (line 793) | DWORD WINAPI MapProcessHandle( HANDLE hProcess )
  function SetProcessDword (line 802) | void WINAPI SetProcessDword( DWORD dwProcessID, INT offset, DWORD value )
  function DWORD (line 843) | DWORD WINAPI GetProcessDword( DWORD dwProcessID, INT offset )
  function BOOL (line 911) | BOOL WINAPI FreeLibrary32_16( HINSTANCE module )
  function DWORD (line 919) | DWORD WINAPI GetModuleFileName32_16( HMODULE module, LPSTR buffer, DWORD...
  function HMODULE (line 927) | HMODULE WINAPI GetModuleHandle32_16(LPCSTR module)
  function DWORD (line 935) | DWORD WINAPI RegisterServiceProcess16( DWORD dwProcessId, DWORD dwType )
  function DWORD (line 943) | DWORD WINAPI WaitForMultipleObjectsEx16( DWORD count, const HANDLE *hand...
  function VOID (line 957) | VOID WINAPI VWin32_BoostThreadGroup( DWORD threadId, INT boost )
  function VOID (line 966) | VOID WINAPI VWin32_BoostThreadStatic( DWORD threadId, INT boost )
  function LONG (line 986) | LONG WINAPI KERNEL_nop(void)
  function FARPROC16 (line 995) | FARPROC16 WINAPI ToolHelpHook16(FARPROC16 func)
  type thread_args (line 1004) | struct thread_args
  function DWORD (line 1010) | static DWORD CALLBACK start_thread16( LPVOID threadArgs )
  function HANDLE (line 1020) | HANDLE WINAPI CreateThread16( SECURITY_ATTRIBUTES *sa, DWORD stack,
  function _DebugOutput (line 1034) | void WINAPIV _DebugOutput( WORD flags, LPCSTR spec, VA_LIST16 valist )
  function fill_stack_trace_entry (line 1053) | void fill_stack_trace_entry(STACKTRACEENTRY *ste)
  function BOOL16 (line 1068) | BOOL16 WINAPI StackTraceFirst16(STACKTRACEENTRY *ste, HTASK16 htask)
  function BOOL16 (line 1092) | BOOL16 WINAPI StackTraceCSIPFirst16(STACKTRACEENTRY *ste, WORD wSS, WORD...
  function BOOL16 (line 1109) | BOOL16 WINAPI StackTraceNext16(STACKTRACEENTRY *ste)
  function BOOL (line 1145) | BOOL WINAPI TaskSetCSIP16(HTASK16 htask, WORD cs, WORD ip)
  function DWORD (line 1159) | DWORD WINAPI TaskGetCSIP16(HTASK16 htask)
  function BOOL (line 1171) | BOOL WINAPI TaskSwitch16(HTASK16 htask, SEGPTR dwNewCSIP)

FILE: krnl386/kernel16_private.h
  type GDI_TEB_BATCH (line 121) | typedef struct _GDI_TEB_BATCH
  type RTL_ACTIVATION_CONTEXT_STACK_FRAME (line 128) | typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
  type ACTIVATION_CONTEXT_STACK (line 134) | typedef struct _ACTIVATION_CONTEXT_STACK
  type RTL_BITMAP (line 142) | typedef struct tagRTL_BITMAP {
  type RTL_DRIVE_LETTER_CURDIR (line 147) | typedef struct RTL_DRIVE_LETTER_CURDIR
  type CURDIR (line 154) | typedef struct _CURDIR
  type RTL_USER_PROCESS_PARAMETERS (line 159) | typedef struct _RTL_USER_PROCESS_PARAMETERS
  type PEB (line 212) | typedef struct _PEB
  type TEB (line 286) | typedef struct _TEB
  type _TEB (line 359) | struct _TEB
  type _TEB (line 359) | struct _TEB
  function NtCurrentTeb (line 361) | NtCurrentTeb(void)
  type LDR_MODULE (line 374) | typedef struct _LDR_MODULE
  type SYSTEM_BASIC_INFORMATION (line 425) | typedef struct _SYSTEM_BASIC_INFORMATION {
  type KEY_VALUE_INFORMATION_CLASS (line 446) | typedef enum _KEY_VALUE_INFORMATION_CLASS {
  type KEY_VALUE_PARTIAL_INFORMATION (line 454) | typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
  type WINE_VM86_TEB_INFO (line 461) | typedef struct
  function WINE_VM86_TEB_INFO (line 468) | static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
  type WIN16_SUBSYSTEM_TIB (line 475) | typedef struct
  type NE_MODULE (line 489) | typedef struct _NE_MODULE
  type ET_ENTRY (line 531) | typedef struct
  type ET_BUNDLE (line 539) | typedef struct
  type SEGTABLEENTRY (line 548) | typedef struct
  type INSTANCEDATA (line 558) | typedef struct
  type ENTRYPOINT16 (line 571) | typedef struct
  type CALLFROM16 (line 580) | typedef struct
  type THHOOK (line 593) | typedef struct _THHOOK
  function SEGPTR (line 635) | static inline SEGPTR stack16_push( int size )
  function stack16_pop (line 644) | static inline void stack16_pop( int size )
  function LPVOID (line 654) | extern LPVOID DOSMEM_MapRealToLinear(DWORD) DECLSPEC_HIDDEN; /* real-mod...
  function stack32_push (line 758) | static inline void stack32_push( CONTEXT *context, DWORD val )
  function DWORD (line 765) | static inline DWORD stack32_pop( CONTEXT *context )
  type EVENT_TYPE (line 803) | typedef enum _EVENT_TYPE {
  type FILE_INTERNAL_INFORMATION (line 811) | typedef struct _FILE_INTERNAL_INFORMATION {
  type FILE_INFORMATION_CLASS (line 815) | typedef enum _FILE_INFORMATION_CLASS {
  type SEGPTR (line 935) | typedef SEGPTR(*pm_interrupt_handler)(WORD num, DWORD addr);
  type DWORD (line 937) | typedef DWORD(*wine_call_to_16_vm86_t)(DWORD target, DWORD cbArgs, PEXCE...
  type kernel_thread_data (line 961) | struct kernel_thread_data

FILE: krnl386/local.c
  type LOCALARENA (line 44) | typedef struct
  type LOCALHANDLEENTRY (line 74) | typedef struct
  type LOCALHEAPINFO (line 97) | typedef struct
  type LOCAL32INFO (line 121) | typedef struct
  type LOCAL32ENTRY (line 131) | typedef struct
  type LOCAL32HEADER (line 169) | typedef struct _LOCAL32HEADER
  function BOOL16 (line 194) | static inline BOOL16 call_notify_func( FARPROC16 proc, WORD msg, HLOCAL1...
  function LOCALHEAPINFO (line 213) | static LOCALHEAPINFO *LOCAL_GetHeap( HANDLE16 ds )
  function LOCAL_MakeBlockFree (line 241) | static void LOCAL_MakeBlockFree( char *baseptr, WORD block )
  function LOCAL_RemoveFreeBlock (line 279) | static void LOCAL_RemoveFreeBlock( char *baseptr, WORD block )
  function LOCAL_AddBlock (line 301) | static void LOCAL_AddBlock( char *baseptr, WORD prev, WORD new )
  function LOCAL_RemoveBlock (line 321) | static void LOCAL_RemoveBlock( char *baseptr, WORD block )
  function LOCAL_PrintHeap (line 349) | static void LOCAL_PrintHeap( HANDLE16 ds )
  function BOOL (line 409) | static BOOL LOCAL_Validate(WORD ds, HANDLE16 handle)
  function BOOL16 (line 438) | BOOL16 WINAPI LocalInit16( HANDLE16 selector, WORD start, WORD end )
  function BOOL16 (line 550) | static BOOL16 LOCAL_GrowHeap( HANDLE16 ds, DWORD newsize )
  function HLOCAL16 (line 616) | static HLOCAL16 LOCAL_FreeArena( WORD ds, WORD arena )
  function WORD (line 668) | static WORD LOCAL_ShrinkArena( WORD ds, WORD arena, WORD size, BOOL from...
  function LOCAL_GrowArenaDownward (line 700) | static void LOCAL_GrowArenaDownward( WORD ds, WORD arena, WORD newsize )
  function LOCAL_GrowArenaUpward (line 735) | static void LOCAL_GrowArenaUpward( WORD ds, WORD arena, WORD newsize )
  function WORD (line 752) | static WORD LOCAL_GetFreeSpace(WORD ds, WORD countdiscard)
  function UINT16 (line 785) | static UINT16 LOCAL_Compact( HANDLE16 ds, UINT16 minfree, UINT16 flags )
  function HLOCAL16 (line 909) | static HLOCAL16 LOCAL_FindFreeBlock( HANDLE16 ds, WORD size, WORD flags )
  function HLOCAL16 (line 969) | static HLOCAL16 LOCAL_GetBlock( HANDLE16 ds, DWORD size, WORD flags )
  function BOOL16 (line 1064) | static BOOL16 LOCAL_NewHTable( HANDLE16 ds )
  function HLOCAL16 (line 1105) | static HLOCAL16 LOCAL_GetNewHandleEntry( HANDLE16 ds )
  function LOCAL_FreeHandleEntry (line 1154) | static void LOCAL_FreeHandleEntry( HANDLE16 ds, HLOCAL16 handle )
  function HLOCAL16 (line 1204) | HLOCAL16 WINAPI LocalFree16( HLOCAL16 handle )
  function HLOCAL16 (line 1238) | HLOCAL16 WINAPI LocalAlloc16( UINT16 flags, WORD size )
  function HLOCAL16 (line 1295) | HLOCAL16 WINAPI LocalReAlloc16( HLOCAL16 handle, WORD size, UINT16 flags )
  function HLOCAL16 (line 1517) | static HLOCAL16 LOCAL_InternalLock( LPSTR heap, HLOCAL16 handle )
  function BOOL16 (line 1536) | BOOL16 WINAPI LocalUnlock16( HLOCAL16 handle )
  function UINT16 (line 1557) | UINT16 WINAPI LocalSize16( HLOCAL16 handle )
  function UINT16 (line 1582) | UINT16 WINAPI LocalFlags16( HLOCAL16 handle )
  function WORD (line 1606) | WORD WINAPI LocalHeapSize16(void)
  function WORD (line 1617) | WORD WINAPI LocalCountFree16(void)
  function HLOCAL16 (line 1650) | HLOCAL16 WINAPI LocalHandle16( WORD addr )
  function SEGPTR (line 1687) | SEGPTR WINAPI LocalLock16( HLOCAL16 handle )
  function UINT16 (line 1698) | UINT16 WINAPI LocalCompact16( UINT16 minfree )
  function FARPROC16 (line 1723) | FARPROC16 WINAPI LocalNotify16( FARPROC16 func )
  function UINT16 (line 1746) | UINT16 WINAPI LocalShrink16( HGLOBAL16 handle, UINT16 newsize )
  function DWORD (line 1762) | DWORD WINAPI GetHeapSpaces16( HMODULE16 module )
  function WORD (line 1779) | WORD WINAPI LocalHandleDelta16( WORD delta )
  function HANDLE (line 1802) | HANDLE WINAPI Local32Init16( WORD segment, DWORD tableSize,
  function LPDWORD (line 1913) | static LPDWORD Local32_SearchHandle( LOCAL32HEADER *header, DWORD addr )
  function VOID (line 1931) | static VOID Local32_ToHandle( LOCAL32HEADER *header, INT16 type,
  function VOID (line 1974) | static VOID Local32_FromHandle( LOCAL32HEADER *header, INT16 type,
  function DWORD (line 2003) | DWORD WINAPI Local32Alloc16( HANDLE heap, DWORD size, INT16 type, DWORD ...
  function DWORD (line 2081) | DWORD WINAPI Local32ReAlloc16( HANDLE heap, DWORD addr, INT16 type,
  function BOOL (line 2115) | BOOL WINAPI Local32Free16( HANDLE heap, DWORD addr, INT16 type )
  function DWORD (line 2161) | DWORD WINAPI Local32Translate16( HANDLE heap, DWORD addr, INT16 type1, I...
  function DWORD (line 2177) | DWORD WINAPI Local32Size16( HANDLE heap, DWORD addr, INT16 type )
  function BOOL (line 2192) | BOOL WINAPI Local32ValidHandle16( HANDLE heap, WORD addr )
  function WORD (line 2205) | WORD WINAPI Local32GetSegment16( HANDLE heap )
  function LOCAL32HEADER (line 2214) | static LOCAL32HEADER *Local32_GetHeap( HGLOBAL16 handle )
  function BOOL16 (line 2238) | BOOL16 WINAPI Local32Info16( LOCAL32INFO *pLocal32Info, HGLOBAL16 handle )
  function BOOL16 (line 2284) | BOOL16 WINAPI Local32First16( LOCAL32ENTRY *pLocal32Entry, HGLOBAL16 han...
  function BOOL16 (line 2293) | BOOL16 WINAPI Local32Next16( LOCAL32ENTRY *pLocal32Entry )

FILE: krnl386/ne_module.c
  type GPHANDLERDEF (line 53) | typedef struct _GPHANDLERDEF
  type ne_segment_table_entry_s (line 65) | struct ne_segment_table_entry_s
  function patch_code_segment (line 85) | static inline void patch_code_segment( NE_MODULE *pModule )
  function BOOL (line 114) | static inline BOOL contains_path( LPCSTR name )
  function NE_strcasecmp (line 125) | static int NE_strcasecmp( const char *str1, const char *str2 )
  function NE_strncasecmp (line 139) | static int NE_strncasecmp( const char *str1, const char *str2, int len )
  function NE_MODULE (line 151) | NE_MODULE *NE_GetPtr( HMODULE16 hModule )
  function NE_RegisterModule (line 160) | static void NE_RegisterModule( NE_MODULE *pModule )
  function NE_DumpModule (line 170) | void NE_DumpModule( HMODULE16 hModule )
  function NE_WalkModules (line 300) | void NE_WalkModules(void)
  function NE_DumpAllModules (line 320) | __declspec(dllexport) void NE_DumpAllModules(void)
  function NE_InitResourceHandler (line 369) | static void NE_InitResourceHandler( HMODULE16 hModule )
  function WORD (line 396) | WORD NE_GetOrdinal( HMODULE16 hModule, const char *name )
  function FARPROC16 (line 461) | FARPROC16 WINAPI NE_GetEntryPoint( HMODULE16 hModule, WORD ordinal )
  function FARPROC16 (line 469) | FARPROC16 NE_GetEntryPointEx( HMODULE16 hModule, WORD ordinal, BOOL16 sn...
  function FARPROC16 (line 511) | FARPROC16 WINAPI EntryAddrProc16( HMODULE16 hModule, WORD ordinal )
  function BOOL16 (line 524) | BOOL16 NE_SetEntryPoint( HMODULE16 hModule, WORD ordinal, WORD offset )
  function HMODULE16 (line 622) | static HMODULE16 build_module( const void *mapping, SIZE_T mapping_size,...
  function BOOL (line 846) | static BOOL NE_LoadDLLs( NE_MODULE *pModule )
  function HINSTANCE16 (line 932) | static HINSTANCE16 NE_DoLoadModule( NE_MODULE *pModule )
  function HINSTANCE16 (line 971) | static HINSTANCE16 NE_LoadModule( LPCSTR name, BOOL lib_only )
  function HMODULE16 (line 1027) | static HMODULE16 NE_DoLoadBuiltinModule( const IMAGE_DOS_HEADER *mz_head...
  function BOOL (line 1078) | static BOOL builtin_override(const char *lib)
  function HINSTANCE16 (line 1101) | static HINSTANCE16 MODULE_LoadModule16( LPCSTR libname, BOOL implicit, B...
  function HINSTANCE16 (line 1244) | static HINSTANCE16 NE_CreateThread( NE_MODULE *pModule, WORD cmdShow, LP...
  type LOADPARMS32 (line 1287) | typedef struct tagLOADPARMS32 {
  function HANDLE (line 1296) | HANDLE WINAPI LoadModule_wine_implementation(LPCSTR name, LPVOID paramBl...
  function HINSTANCE16 (line 1378) | HINSTANCE16 WINAPI LoadModule16( LPCSTR name, LPVOID paramBlock )
  function BOOL (line 1469) | BOOL WINAPI TOOLHELP_CallNotify(WORD wID, DWORD dwData)
  function DWORD (line 1483) | DWORD NE_StartTask(void)
  function HINSTANCE16 (line 1576) | HINSTANCE16 WINAPI LoadLibrary16( LPCSTR libname )
  function BOOL16 (line 1588) | static BOOL16 MODULE_CallWEP( HMODULE16 hModule )
  function BOOL16 (line 1619) | static BOOL16 NE_FreeModule( HMODULE16 hModule, BOOL call_wep, BOOL clea...
  function BOOL16 (line 1702) | BOOL16 WINAPI FreeModule16( HMODULE16 hModule )
  function DWORD (line 1707) | DWORD WINAPI WIN16_FreeLibrary16(HINSTANCE16 handle)
  function FreeLibrary16 (line 1717) | void WINAPI FreeLibrary16( HINSTANCE16 handle )
  function HMODULE16 (line 1727) | HMODULE16 WINAPI GetModuleHandle16( LPCSTR name )
  function BOOL16 (line 1819) | BOOL16 WINAPI GetModuleName16( HINSTANCE16 hinst, LPSTR buf, INT16 count )
  function INT16 (line 1846) | INT16 WINAPI GetModuleFileName16( HINSTANCE16 hModule, LPSTR lpFileName,
  function INT16 (line 1867) | INT16 WINAPI GetModuleUsage16( HINSTANCE16 hModule )
  function WORD (line 1877) | WORD WINAPI GetExpWinVer16( HMODULE16 hModule )
  function BYTE (line 1884) | BYTE get_aflags( HMODULE16 hModule )
  function HINSTANCE16 (line 1894) | HINSTANCE16 WINAPI WinExec16(LPCSTR lpCmdLine, UINT16 nCmdShow)
  function FARPROC16 (line 2080) | FARPROC16 WINAPI WIN16_GetProcAddress16(HMODULE16 hModule, LPCSTR name)
  function FARPROC16 (line 2090) | FARPROC16 WINAPI GetProcAddress16( HMODULE16 hModule, LPCSTR name )
  function SEGPTR (line 2120) | SEGPTR WINAPI HasGPHandler16( SEGPTR address )
  function DWORD (line 2164) | DWORD WINAPI WIN16_GetModuleHandle( SEGPTR name )
  function HMODULE16 (line 2174) | static HMODULE16 NE_GetModuleByFilename( LPCSTR name )
  function FARPROC16 (line 2247) | FARPROC16 WINAPI WIN32_GetProcAddress16( HMODULE hModule, LPCSTR name )
  function BOOL16 (line 2261) | BOOL16 WINAPI IsRomModule16( HMODULE16 unused )
  function BOOL16 (line 2269) | BOOL16 WINAPI IsRomFile16( HFILE16 unused )
  function HMODULE16 (line 2279) | static HMODULE16 create_dummy_module( HMODULE module32 )
  function HINSTANCE16 (line 2385) | HINSTANCE16 WINAPI PrivateLoadLibrary(LPCSTR libname)
  function PrivateFreeLibrary (line 2395) | void WINAPI PrivateFreeLibrary(HINSTANCE16 handle)
  function HMODULE (line 2404) | HMODULE WINAPI LoadLibrary32_16( LPCSTR libname )
  function HMODULE16 (line 2418) | HMODULE16 WINAPI MapHModuleLS(HMODULE hmod)
  function HMODULE (line 2444) | HMODULE WINAPI MapHModuleSL(HMODULE16 hmod)
  function MapHInstLS16 (line 2461) | void WINAPI MapHInstLS16( CONTEXT *context )
  function MapHInstSL16 (line 2469) | void WINAPI MapHInstSL16( CONTEXT *context )

FILE: krnl386/ne_segment.c
  type relocation_entry_s (line 51) | struct relocation_entry_s
  type SELFLOADHEADER (line 80) | typedef struct
  function HFILE16 (line 121) | static HFILE16 NE_OpenFile( NE_MODULE *pModule )
  function BOOL (line 141) | static inline BOOL apply_relocations( NE_MODULE *pModule, const struct r...
  function notify_load_seg (line 340) | static void notify_load_seg(NE_MODULE *pModule, WORD segnum, SEGTABLEENT...
  function BOOL (line 357) | BOOL NE_LoadSegment( NE_MODULE *pModule, WORD segnum )
  function BOOL (line 481) | BOOL NE_LoadAllSegments( NE_MODULE *pModule )
  function NE_FixupSegmentPrologs (line 541) | static void NE_FixupSegmentPrologs(NE_MODULE *pModule, WORD segnum)
  function DWORD (line 614) | DWORD WINAPI PatchCodeHandle16(HANDLE16 hSeg)
  function VOID (line 640) | static VOID NE_GetDLLInitParams( NE_MODULE *pModule,
  function BOOL (line 683) | static BOOL NE_InitDLL( NE_MODULE *pModule, SEGPTR cmdline )
  function NE_InitializeDLLs (line 762) | void NE_InitializeDLLs( HMODULE16 hModule, SEGPTR cmdline )
  function NE_CallUserSignalProc (line 794) | void NE_CallUserSignalProc( HMODULE16 hModule, UINT16 code, WORD arg1, W...
  type WORD (line 814) | typedef DWORD (WINAPI *WinNEEntryProc)(DWORD,WORD,WORD,WORD,DWORD,WORD);
  function NE_CallDllEntryPoint (line 816) | static void NE_CallDllEntryPoint( NE_MODULE *pModule, DWORD dwReason )
  type ne_init_list (line 885) | struct ne_init_list
  function add_to_init_list (line 892) | static void add_to_init_list( struct ne_init_list *list, NE_MODULE *hMod...
  function free_init_list (line 918) | static void free_init_list( struct ne_init_list *list )
  function fill_init_list (line 927) | static void fill_init_list( struct ne_init_list *list, HMODULE16 hModule )
  function call_init_list (line 963) | static void call_init_list( struct ne_init_list *list )
  function NE_DllProcessAttach (line 970) | void NE_DllProcessAttach( HMODULE16 hModule )
  function WORD (line 986) | static WORD NE_Ne2MemFlags(WORD flags)
  function DWORD (line 1011) | DWORD WINAPI MyAlloc16( WORD wFlags, WORD wSize, WORD wElem )
  function HINSTANCE16 (line 1034) | HINSTANCE16 NE_GetInstance( NE_MODULE *pModule )
  function BOOL (line 1049) | BOOL NE_CreateSegment( NE_MODULE *pModule, int segnum, WORD sel )
  function BOOL (line 1110) | BOOL NE_CreateAllSegments( NE_MODULE *pModule )
  function BOOL16 (line 1132) | BOOL16 WINAPI IsSharedSelector16( HANDLE16 selector )

FILE: krnl386/registry.c
  function fix_win16_hkey (line 62) | static inline void fix_win16_hkey( HKEY *hkey )
  function BOOL (line 79) | static BOOL is_redir_root_key(HKEY key)
  function init_func_ptrs (line 85) | static void init_func_ptrs(void)
  function BOOL (line 124) | static BOOL is_empty(LPCSTR name)
  function DWORD (line 132) | DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD index, LPSTR name, DWORD nam...
  function fix_redir_key (line 140) | static void fix_redir_key(PHKEY retkey, LPDWORD result)
  function DWORD (line 161) | DWORD WINAPI RegOpenKey16( HKEY hkey, LPCSTR name, PHKEY retkey )
  function LPWSTR (line 170) | static LPWSTR strdupAtoW(LPCSTR str)
  function DWORD (line 185) | DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR name, PHKEY retkey )
  function DWORD (line 239) | DWORD WINAPI RegDeleteKey16( HKEY hkey, LPCSTR name )
  function DWORD (line 252) | DWORD WINAPI RegCloseKey16( HKEY hkey )
  function DWORD (line 266) | DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR name, DWORD type, LPCSTR d...
  function DWORD (line 297) | DWORD WINAPI RegDeleteValue16( HKEY hkey, LPSTR name )
  function DWORD (line 310) | DWORD WINAPI RegEnumValue16( HKEY hkey, DWORD index, LPSTR value, LPDWOR...
  function DWORD (line 330) | DWORD WINAPI RegQueryValue16( HKEY hkey, LPCSTR name, LPSTR data, LPDWOR...
  function DWORD (line 352) | DWORD WINAPI RegQueryValueEx16( HKEY hkey, LPCSTR name, LPDWORD reserved...
  function DWORD (line 364) | DWORD WINAPI RegSetValueEx16( HKEY hkey, LPCSTR name, DWORD reserved, DW...
  function DWORD (line 376) | DWORD WINAPI RegFlushKey16( HKEY hkey )

FILE: krnl386/relay.c
  type PROC16_RELAY (line 45) | typedef struct {
  type RELAY_Stack16 (line 65) | typedef struct {
  function strcmpiAW (line 83) | static inline int strcmpiAW( const char *strA, const WCHAR *strW )
  function strncmpiAW (line 90) | static inline int strncmpiAW( const char *strA, const WCHAR *strW, int n )
  function WCHAR (line 103) | static const WCHAR **build_list( const WCHAR *buffer )
  function RELAY16_InitDebugLists (line 140) | void RELAY16_InitDebugLists(void)
  function BOOL (line 203) | static BOOL check_list( const char *module, int ordinal, const char *fun...
  function BOOL (line 234) | static BOOL RELAY_ShowDebugmsgRelay(const char *module, int ordinal, con...
  function BOOL (line 250) | BOOL SNOOP16_ShowDebugmsgSnoop(const char *module, int ordinal, const ch...
  function CALLFROM16 (line 265) | static const CALLFROM16 *get_entry_point( STACK16FRAME *frame, LPSTR mod...
  function vm_debug_get_entry_point (line 485) | __declspec(dllexport) void vm_debug_get_entry_point(char *module, char *...
  function relay_call_from_16 (line 498) | int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEX...
  function RELAY_Stack16 (line 677) | static RELAY_Stack16 *RELAY_GetPointer( DWORD offset )
  function RELAY_MakeShortContext (line 694) | static void RELAY_MakeShortContext( CONTEXT *context )
  function RELAY_RelayStub (line 729) | static void __stdcall RELAY_RelayStub( DOSRELAY proc, unsigned char *arg...
  function DOSVM_RelayHandler (line 765) | void DOSVM_RelayHandler( CONTEXT *context )
  function DOSVM_BuildCallFrame (line 789) | void DOSVM_BuildCallFrame( CONTEXT *context, DOSRELAY relay, LPVOID data )
  function init_arg_types (line 825) | static void init_arg_types(unsigned int *arg_types, const char *args, in...
  function init_template_func (line 863) | static void init_template_func(CALLFROM16 *dest, const char *func)
  function SEGPTR (line 882) | SEGPTR make_thunk_32(void *funcptr, const char *arguments, const char *n...
  function free_thunk_32 (line 936) | void free_thunk_32(SEGPTR thunk)
  function set_vm_inject_cb (line 946) | void WINAPI set_vm_inject_cb(vm_inject_t cb)
  function BOOL (line 952) | BOOL WINAPI vm_inject(DWORD vpfn16, DWORD dwFlags,

FILE: krnl386/resource.c
  function NE_MODULE (line 48) | static inline NE_MODULE *get_module( HMODULE16 mod )
  type HRSRC_ELEM (line 56) | typedef struct _HRSRC_ELEM
  type HRSRC_MAP (line 62) | typedef struct _HRSRC_MAP
  function HRSRC16 (line 73) | static HRSRC16 MapHRsrc32To16( NE_MODULE *pModule, HRSRC hRsrc32, WORD t...
  function HRSRC (line 126) | static HRSRC MapHRsrc16To32( NE_MODULE *pModule, HRSRC16 hRsrc16 )
  function WORD (line 137) | static WORD MapHRsrc16ToType( NE_MODULE *pModule, HRSRC16 hRsrc16 )
  function LPCSTR (line 151) | static inline LPCSTR get_res_name( LPCSTR name )
  function NE_TYPEINFO (line 161) | static inline NE_TYPEINFO *next_typeinfo( NE_TYPEINFO *info )
  function FARPROC16 (line 170) | static inline FARPROC16 get_default_res_handler(void)
  function DWORD (line 185) | static DWORD NE_FindNameTableId( NE_MODULE *pModule, LPCSTR typeId, LPCS...
  function NE_TYPEINFO (line 258) | static NE_TYPEINFO *NE_FindTypeSection( LPBYTE pResTab, NE_TYPEINFO *pTy...
  function NE_NAMEINFO (line 304) | static NE_NAMEINFO *NE_FindResourceFromType( LPBYTE pResTab, NE_TYPEINFO...
  function HGLOBAL16 (line 337) | HGLOBAL16 WINAPI NE_DefResourceHandler( HGLOBAL16 hMemObj, HMODULE16 hMo...
  function FARPROC16 (line 372) | FARPROC16 WINAPI SetResourceHandler16( HMODULE16 hModule, LPCSTR typeId,...
  function DWORD (line 398) | static inline DWORD get_dword(LPCVOID *p)
  function put_dword (line 405) | static inline void put_dword(LPVOID *p, DWORD d)
  function WORD (line 411) | static inline WORD get_word(LPCVOID *p)
  function put_word (line 418) | static inline void put_word(LPVOID *p, WORD w)
  function BYTE (line 424) | static inline BYTE get_byte(LPCVOID *p)
  function put_byte (line 431) | static inline void put_byte(LPVOID *p, BYTE b)
  function convert_name (line 438) | static void convert_name( LPVOID *dst, LPCVOID *src )
  function VOID (line 463) | VOID WINAPI ConvertDialog32To16( LPCVOID dialog32, DWORD size, LPVOID di...
  function WORD (line 588) | WORD WINAPI GetDialog32Size16( LPCVOID dialog32 )
  function VOID (line 701) | VOID WINAPI ConvertMenu32To16( LPCVOID menu32, DWORD size, LPVOID menu16 )
  function WORD (line 764) | WORD WINAPI GetMenu32Size16( LPCVOID menu32 )
  function ConvertAccelerator32To16 (line 817) | static void ConvertAccelerator32To16( LPCVOID acc32, DWORD size, LPVOID ...
  function HGLOBAL16 (line 841) | static HGLOBAL16 NE_LoadPEResource( NE_MODULE *pModule, WORD type, LPCVO...
  function HGLOBAL16 (line 874) | HGLOBAL16 WINAPI AllocResource16( HMODULE16 hModule, HRSRC16 hRsrc, DWOR...
  function HGLOBAL16 (line 900) | HGLOBAL16 WINAPI DirectResAlloc16( HINSTANCE16 hInstance, WORD wType,
  function INT16 (line 918) | INT16 WINAPI AccessResource16( HINSTANCE16 hModule, HRSRC16 hRsrc )
  function HRSRC16 (line 940) | HRSRC16 WINAPI FindResource16( HMODULE16 hModule, LPCSTR name, LPCSTR ty...
  function NE_TYPEINFO (line 990) | NE_TYPEINFO *get_resource_table(HMODULE16 hmod, LPCSTR type, LPBYTE *res...
  function HGLOBAL16 (line 1004) | HGLOBAL16 WINAPI LoadResource16( HMODULE16 hModule, HRSRC16 hRsrc )
  function SEGPTR (line 1085) | SEGPTR WINAPI WIN16_LockResource16( HGLOBAL16 handle )
  function LPVOID (line 1096) | LPVOID WINAPI LockResource16( HGLOBAL16 handle )
  function DWORD (line 1105) | DWORD WINAPI SizeofResource16( HMODULE16 hModule, HRSRC16 hRsrc )
  function BOOL16 (line 1132) | BOOL16 WINAPI FreeResource16( HGLOBAL16 handle )
  function BYTE (line 1192) | static BYTE * USER32_LoadResource(LPBYTE peimage, NE_NAMEINFO* pNInfo, W...
  type icoICONDIRENTRY (line 1199) | typedef struct
  type icoICONDIR (line 1210) | typedef struct
  function BYTE (line 1220) | static BYTE * ICO_LoadIcon(LPBYTE peimage, LPicoICONDIRENTRY lpiIDE, ULO...
  function HICON (line 1228) | __declspec(dllexport) HICON NE_ExtractIcon(LPCSTR lpszExeFileName,

FILE: krnl386/selector.c
  function WORD (line 36) | static inline WORD get_sel_count( WORD sel )
  function WORD (line 45) | WORD WINAPI AllocSelectorArray16( WORD count )
  function WORD (line 71) | WORD WINAPI AllocSelector16( WORD sel )
  function DWORD (line 92) | DWORD WINAPI WIN16_FreeSelector16(WORD sel)
  function WORD (line 101) | WORD WINAPI FreeSelector16( WORD sel )
  function BOOL (line 120) | static BOOL SELECTOR_SetEntries( WORD sel, const void *base, DWORD size,...
  function WORD (line 145) | WORD SELECTOR_AllocBlock( const void *base, DWORD size, unsigned char fl...
  function SELECTOR_FreeBlock (line 166) | void SELECTOR_FreeBlock( WORD sel )
  function WORD (line 180) | WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size )
  function WORD (line 199) | WORD WINAPI PrestoChangoSelector16( WORD selSrc, WORD selDst )
  function WORD (line 214) | WORD WINAPI AllocCStoDSAlias16( WORD sel )
  function WORD (line 234) | WORD WINAPI AllocDStoCSAlias16( WORD sel )
  function SEGPTR (line 254) | SEGPTR WINAPI LongPtrAdd16( DWORD ptr, DWORD add )
  function DWORD (line 268) | DWORD WINAPI GetSelectorBase( WORD sel )
  function WORD (line 282) | WORD WINAPI SetSelectorBase( WORD sel, DWORD base )
  function DWORD (line 295) | DWORD WINAPI GetSelectorLimit16( WORD sel )
  function WORD (line 304) | WORD WINAPI SetSelectorLimit16( WORD sel, DWORD limit )
  function WORD (line 317) | WORD WINAPI SelectorAccessRights16( WORD sel, WORD op, WORD val )
  function BOOL16 (line 339) | BOOL16 WINAPI IsBadCodePtr16( SEGPTR lpfn )
  function BOOL16 (line 358) | BOOL16 WINAPI IsBadStringPtr16( SEGPTR ptr, UINT16 size )
  function BOOL16 (line 379) | BOOL16 WINAPI IsBadHugeReadPtr16( SEGPTR ptr, DWORD size )
  function BOOL16 (line 399) | BOOL16 WINAPI IsBadHugeWritePtr16( SEGPTR ptr, DWORD size )
  function BOOL16 (line 417) | BOOL16 WINAPI IsBadReadPtr16( SEGPTR ptr, UINT16 size )
  function BOOL16 (line 426) | BOOL16 WINAPI IsBadWritePtr16( SEGPTR ptr, UINT16 size )
  function BOOL16 (line 435) | BOOL16 WINAPI IsBadFlatReadWritePtr16( SEGPTR ptr, DWORD size, BOOL16 bW...
  type mapls_entry (line 446) | struct mapls_entry
  type mapls_entry (line 454) | struct mapls_entry
  function SEGPTR (line 463) | SEGPTR WINAPI MapLS( LPCVOID ptr )
  function UnMapLS (line 513) | void WINAPI UnMapLS( SEGPTR sptr )
  function LPVOID (line 533) | LPVOID WINAPI MapSL( SEGPTR sptr )
  function LPVOID (line 547) | LPVOID WINAPI MapSLFix( SEGPTR sptr )

FILE: krnl386/snoop.c
  type SNOOP16_FUN (line 44) | typedef	struct tagSNOOP16_FUN {
  type SNOOP16_DLL (line 54) | typedef struct tagSNOOP16_DLL {
  type SNOOP16_RETURNENTRY (line 62) | typedef struct tagSNOOP16_RETURNENTRY {
  type SNOOP16_RETURNENTRIES (line 74) | typedef struct tagSNOOP16_RETURNENTRIES {
  type SNOOP16_RELAY (line 80) | typedef struct tagSNOOP16_RELAY {
  function SNOOP16_RegisterDLL (line 99) | void
  function FARPROC16 (line 168) | FARPROC16
  function SNOOP16_Entry (line 245) | static void WINAPI SNOOP16_Entry(FARPROC proc, LPBYTE args, CONTEXT *con...
  function SNOOP16_Return (line 313) | static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *co...

FILE: krnl386/soundblaster.c
  function DWORD (line 73) | static DWORD CALLBACK SB_Poll( void *dummy )
  function BOOL (line 121) | static BOOL SB_Init(void)
  function SB_Reset (line 180) | static void SB_Reset(void)
  function SB_StdSampleRate (line 214) | static int SB_StdSampleRate(int SampleRate)
  function SB_ioport_out (line 227) | void SB_ioport_out( WORD port, BYTE val )
  function BYTE (line 346) | BYTE SB_ioport_in( WORD port )

FILE: krnl386/stub.c
  function DPMI_PendingEventCheck (line 21) | void DPMI_PendingEventCheck(void)
  function DPMI_PendingEventCheck_Cleanup (line 25) | void DPMI_PendingEventCheck_Cleanup(void)
  function DPMI_PendingEventCheck_Return (line 29) | void DPMI_PendingEventCheck_Return(void)
  type RMCB (line 34) | typedef struct tagRMCB {
  function DPMI_CallRMCB32 (line 41) | void DPMI_CallRMCB32(RMCB *rmcb, UINT16 ss, DWORD esp, UINT16*es, DWORD*...
  function DWORD (line 56) | DWORD WINAPI GetProcessFlags(DWORD processid)
  function BOOL (line 73) | BOOL WINAPI VerifyConsoleIoHandle(HANDLE h)
  function HANDLE (line 85) | HANDLE WINAPI ConvertToGlobalHandle(HANDLE hSrc)
  function get_debug_mode (line 99) | static int get_debug_mode()
  function DWORD (line 103) | DWORD wine_pm_interrupt_handler(WORD num, DWORD addr)
  function DWORD (line 145) | DWORD WINAPI wine_call_to_16(FARPROC16 target, DWORD cbArgs, PEXCEPTION_...
  function wine_call_to_16_regs (line 149) | void WINAPI wine_call_to_16_regs(CONTEXT *context, DWORD cbArgs, PEXCEPT...
  function __wine_enter_vm86 (line 156) | void __wine_enter_vm86(CONTEXT *context)
  function BOOL16 (line 160) | BOOL16 WINAPI IsDBCSLeadByte16(BYTE TestChar)
  function PVOID (line 166) | __declspec(dllexport) PVOID getWOW32Reserved()
  function PVOID (line 172) | __declspec(dllexport) PVOID setWOW32Reserved(PVOID w)
  function WINE_VM86_TEB_INFO (line 178) | __declspec(dllexport) WINE_VM86_TEB_INFO *getGdiTebBatch()
  type kernel_thread_data (line 184) | struct kernel_thread_data
  type kernel_thread_data (line 186) | struct kernel_thread_data

FILE: krnl386/syslevel.c
  function HANDLE (line 49) | HANDLE WINAPI get_idle_event()
  function VOID (line 57) | VOID WINAPI GetpWin16Lock(SYSLEVEL **lock)
  function SEGPTR (line 65) | SEGPTR WINAPI GetpWin16Lock16(void)
  function VOID (line 81) | VOID WINAPI _CreateSysLevel(SYSLEVEL *lock, INT level)
  function VOID (line 94) | VOID WINAPI _EnterSysLevel(SYSLEVEL *lock)
  function VOID (line 156) | VOID WINAPI _LeaveSysLevel(SYSLEVEL *lock)
  function VOID (line 186) | VOID WINAPI _KERNEL32_86(SYSLEVEL *lock)
  function DWORD (line 195) | DWORD WINAPI _ConfirmSysLevel(SYSLEVEL *lock)
  function VOID (line 207) | VOID WINAPI _CheckNotSysLevel(SYSLEVEL *lock)
  function VOID (line 221) | VOID WINAPI _EnterWin16Lock(void)
  function VOID (line 229) | VOID WINAPI _LeaveWin16Lock(void)
  function DWORD (line 237) | DWORD WINAPI _ConfirmWin16Lock(void)
  function VOID (line 245) | VOID WINAPI ReleaseThunkLock(DWORD *mutex_count)
  function VOID (line 257) | VOID WINAPI RestoreThunkLock(DWORD mutex_count)
  function VOID (line 266) | VOID SYSLEVEL_CheckNotLevel( INT level )

FILE: krnl386/task.c
  function BOOL (line 51) | BOOL is_reactos()
  type thunk (line 76) | struct thunk
  type THUNKS (line 85) | typedef struct
  function BOOL (line 113) | BOOL WINAPI TebTlsSetValue(TEB *teb, DWORD index, LPVOID value)
  function LPVOID (line 131) | LPVOID WINAPI TebTlsGetValue(TEB *teb, DWORD index)
  type kernel_thread_data (line 154) | struct kernel_thread_data
  function TASK_InstallTHHook (line 158) | void TASK_InstallTHHook( THHOOK *pNewThhook )
  function TDB (line 170) | static TDB *TASK_GetPtr( HTASK16 hTask )
  function TDB (line 179) | TDB *TASK_GetCurrent(void)
  function TASK_LinkTask (line 188) | static void TASK_LinkTask( HTASK16 hTask )
  function TASK_UnlinkTask (line 210) | static void TASK_UnlinkTask( HTASK16 hTask )
  function TASK_CreateThunks (line 237) | static void TASK_CreateThunks( HGLOBAL16 handle, WORD offset, WORD count )
  function SEGPTR (line 257) | static SEGPTR TASK_AllocThunk(void)
  function BOOL (line 292) | static BOOL TASK_FreeThunk( SEGPTR thunk )
  function TDB (line 323) | static TDB *TASK_Create( NE_MODULE *pModule, UINT16 cmdShow, LPCSTR cmdl...
  function TASK_DeleteTask (line 437) | static void TASK_DeleteTask( HTASK16 hTask )
  function TASK_CreateMainTask (line 504) | void TASK_CreateMainTask(void)
  type create_data (line 531) | struct create_data
  function WIN16_SUBSYSTEM_TIB (line 539) | static WIN16_SUBSYSTEM_TIB *allocate_win16_tib( TDB *pTask )
  function free_win16_tib (line 567) | static inline void free_win16_tib( WIN16_SUBSYSTEM_TIB *tib )
  function set_thread_internal_windows_ver (line 573) | static void set_thread_internal_windows_ver(DWORD version)
  function cwd_warning (line 627) | static void cwd_warning(void)
  function DWORD (line 658) | static DWORD CALLBACK task_start( LPVOID p )
  function HTASK16 (line 718) | HTASK16 TASK_SpawnTask( NE_MODULE *pModule, WORD cmdShow,
  function HTASK16 (line 745) | HTASK16 TASK_GetTaskFromThread( DWORD thread )
  function TASK_CallTaskSignalProc (line 760) | static void TASK_CallTaskSignalProc( UINT16 uCode, HANDLE16 hTaskOrModule )
  function exit_toolhelp (line 776) | static void exit_toolhelp()
  function TASK_ExitTask (line 793) | void TASK_ExitTask(void)
  function DWORD (line 848) | static DWORD WINAPI call_exit(LPVOID params)
  function ExitKernel16 (line 859) | void WINAPI ExitKernel16(void)
  function InitTask16 (line 871) | void WINAPI InitTask16( CONTEXT *context )
  function BOOL16 (line 933) | BOOL16 WINAPI WaitEvent16( HTASK16 hTask )
  function PostEvent16 (line 972) | void WINAPI PostEvent16( HTASK16 hTask )
  function SetPriority16 (line 994) | void WINAPI SetPriority16( HTASK16 hTask, INT16 delta )
  function HTASK16 (line 1015) | HTASK16 WINAPI LockCurrentTask16( BOOL16 bLock )
  function HTASK16 (line 1026) | HTASK16 WINAPI IsTaskLocked16(void)
  function OldYield16 (line 1035) | void WINAPI OldYield16(void)
  function WIN32_OldYield16 (line 1047) | void WINAPI WIN32_OldYield16(void)
  function DirectedYield16 (line 1059) | void WINAPI DirectedYield16( HTASK16 hTask )
  function Yield16 (line 1151) | void WINAPI Yield16(void)
  function HTASK16 (line 1180) | HTASK16 WINAPI KERNEL_490( HTASK16 someTask )
  function FARPROC16 (line 1191) | FARPROC16 WINAPI MakeProcInstance16( FARPROC16 func, HANDLE16 hInstance )
  function FreeProcInstance16 (line 1252) | void WINAPI FreeProcInstance16( FARPROC16 func )
  function BOOL (line 1274) | static BOOL TASK_GetCodeSegment( FARPROC16 proc, NE_MODULE **ppModule,
  function DWORD (line 1330) | DWORD WINAPI GetCodeHandle16( FARPROC16 proc )
  function BOOL16 (line 1343) | BOOL16 WINAPI GetCodeInfo16( FARPROC16 proc, SEGINFO *segInfo )
  function BOOL16 (line 1375) | BOOL16 WINAPI DefineHandleTable16( WORD wOffset )
  function HQUEUE16 (line 1385) | HQUEUE16 WINAPI SetTaskQueue16( HTASK16 hTask, HQUEUE16 hQueue )
  function HQUEUE16 (line 1401) | HQUEUE16 WINAPI GetTaskQueue16( HTASK16 hTask )
  function HQUEUE16 (line 1413) | HQUEUE16 WINAPI SetThreadQueue16( DWORD thread, HQUEUE16 hQueue )
  function HQUEUE16 (line 1422) | HQUEUE16 WINAPI GetThreadQueue16( DWORD thread )
  function VOID (line 1431) | VOID WINAPI SetFastQueue16( DWORD thread, HQUEUE16 hQueue )
  function HQUEUE16 (line 1439) | HQUEUE16 WINAPI GetFastQueue16( void )
  function SwitchStackTo16 (line 1448) | void WINAPI SwitchStackTo16( WORD seg, WORD ptr, WORD top )
  function SwitchStackBack16 (line 1491) | void WINAPI SwitchStackBack16( WORD dummy1, WORD dummy2, WORD dummy3, CO...
  function GetTaskQueueDS16 (line 1536) | void WINAPI GetTaskQueueDS16(void)
  function GetTaskQueueES16 (line 1545) | void WINAPI GetTaskQueueES16(void)
  function HTASK16 (line 1554) | HTASK16 WINAPI GetCurrentTask(void)
  function DWORD (line 1564) | DWORD WINAPI WIN16_GetCurrentTask(void)
  function DWORD (line 1577) | DWORD WINAPI GetCurrentPDB16(void)
  function DWORD (line 1589) | DWORD WINAPI GetCurPID16( DWORD unused )
  function INT16 (line 1598) | INT16 WINAPI GetInstanceData16( HINSTANCE16 instance, WORD buffer, INT16...
  function WORD (line 1611) | WORD WINAPI GetExeVersion16(void)
  function UINT16 (line 1623) | UINT16 WINAPI SetErrorMode16( UINT16 mode )
  function UINT16 (line 1635) | UINT16 WINAPI GetNumTasks16(void)
  function HINSTANCE16 (line 1647) | HINSTANCE16 WINAPI GetTaskDS16(void)
  function WORD (line 1658) | WORD WINAPI GetDummyModuleHandleDS16(void)
  function BOOL16 (line 1673) | BOOL16 WINAPI IsTask16( HTASK16 hTask )
  function BOOL16 (line 1686) | BOOL16 WINAPI IsWinOldApTask16( HTASK16 hTask )
  function BOOL16 (line 1700) | BOOL16 WINAPI IsOldWindowsTask(HINSTANCE16 hInst)
  function BOOL (line 1714) | BOOL WINAPI IsRealModeTask(HINSTANCE16 hInst)
  function FARPROC16 (line 1722) | FARPROC16 WINAPI SetTaskSignalProc( HTASK16 hTask, FARPROC16 proc )
  function WORD (line 1737) | WORD WINAPI SetSigHandler16( FARPROC16 newhandler, FARPROC16* oldhandler,
  function VOID (line 1765) | VOID WINAPI GlobalNotify16( FARPROC16 proc )
  function HMODULE16 (line 1777) | static inline HMODULE16 GetExePtrHelper( HANDLE16 handle, HTASK16 *hTask )
  function HMODULE16 (line 1825) | HMODULE16 WINAPI WIN16_GetExePtr( HANDLE16 handle )
  function HMODULE16 (line 1839) | HMODULE16 WINAPI GetExePtr( HANDLE16 handle )
  type HARDERROR_RESPONSE_OPTION (line 1861) | typedef enum _HARDERROR_RESPONSE_OPTION
  function FatalAppExit16 (line 1876) | void WINAPI FatalAppExit16( UINT16 action, LPCSTR str )
  function DWORD (line 1914) | DWORD WINAPI GetAppCompatFlags16( HTASK16 hTask )
  function BOOL (line 1929) | static BOOL env_var_limit(const char *v)
  function parse_autoexec (line 1951) | static void parse_autoexec()
  function SEGPTR (line 2056) | SEGPTR WINAPI GetDOSEnvironment16(void)
  function switch_directory (line 2124) | void switch_directory(struct kernel_thread_data *thread_data)

FILE: krnl386/thunk.c
  type ThunkDataCommon (line 47) | struct ThunkDataCommon
  type ThunkDataLS16 (line 53) | struct ThunkDataLS16
  type ThunkDataLS32 (line 60) | struct ThunkDataLS32
  type ThunkDataSL16 (line 72) | struct ThunkDataSL16
  type ThunkDataSL32 (line 86) | struct ThunkDataSL32
  type ThunkDataSL (line 98) | struct ThunkDataSL
  type SLTargetDB (line 133) | struct SLTargetDB
  type SLApiDB (line 140) | struct SLApiDB
  function DEFINE_REGS_ENTRYPOINT (line 151) | DEFINE_REGS_ENTRYPOINT( FT_Prolog )
  function _write_ftprolog (line 199) | static void _write_ftprolog(LPBYTE relayCode ,DWORD *targetTable) {
  function _write_qtthunk (line 222) | static void _write_qtthunk(
  function LPVOID (line 242) | static LPVOID _loadthunk(LPCSTR module, LPCSTR func, LPCSTR module32,
  function LPVOID (line 301) | LPVOID WINAPI GetThunkStuff(LPCSTR module, LPCSTR func)
  function LPVOID (line 310) | LPVOID WINAPI GetThunkBuff(void)
  function UINT (line 319) | UINT WINAPI ThunkConnect32(
  function __regs_QT_Thunk (line 427) | void WINAPI __regs_QT_Thunk( CONTEXT *context )
  function __regs_FT_Prolog (line 509) | void WINAPI __regs_FT_Prolog( CONTEXT *context )
  function __regs_FT_Thunk (line 550) | void WINAPI __regs_FT_Thunk( CONTEXT *context )
  function DWORD (line 662) | DWORD WINAPI ThunkInitLS(
  function __regs_Common32ThkLS (line 715) | void WINAPI __regs_Common32ThkLS( CONTEXT *context )
  function WINAPI (line 774) | WINAPI __regs_OT_32ThkLSF( CONTEXT *context )
  function WINAPI (line 840) | WINAPI ThunkInitLSF(
  function __regs_FT_PrologPrime (line 882) | void WINAPI __regs_FT_PrologPrime( CONTEXT *context )
  function __regs_QT_ThunkPrime (line 911) | void WINAPI __regs_QT_ThunkPrime( CONTEXT *context )
  function VOID (line 940) | VOID WINAPI ThunkInitSL(
  function BOOL (line 960) | BOOL WINAPI SSInit16(void)
  function BOOL (line 973) | BOOL WINAPI SSOnBigStack(void)
  function SSConfirmSmallStack (line 986) | void WINAPI SSConfirmSmallStack( CONTEXT *context )
  function DWORD (line 1002) | DWORD WINAPIV SSCall(
  function __regs_W32S_BackTo32 (line 1026) | void WINAPI __regs_W32S_BackTo32( CONTEXT *context )
  function WINAPI (line 1071) | WINAPI
  function FreeSLCallback (line 1098) | void WINAPI
  function __regs_AllocMappedBuffer (line 1124) | void WINAPI __regs_AllocMappedBuffer(
  function WINAPI (line 1159) | WINAPI __regs_FreeMappedBuffer(
  function WINAPI (line 1178) | WINAPI GetTEBSelectorFS16(void)
  function BOOL16 (line 1195) | BOOL16 WINAPI IsPeFormat16(
  function __regs_K32Thk1632Prolog (line 1221) | void WINAPI __regs_K32Thk1632Prolog( CONTEXT *context )
  function WINAPI (line 1283) | WINAPI __regs_K32Thk1632Epilog( CONTEXT *context )
  function WINAPI (line 1327) | WINAPI PK16FNF(LPSTR strPtr)
  function UINT (line 1343) | UINT WINAPI ThunkConnect16(
  function C16ThkSL (line 1430) | void WINAPI C16ThkSL(CONTEXT *context)
  function C16ThkSL01 (line 1476) | void WINAPI C16ThkSL01(CONTEXT *context)
  type THUNKLET (line 1579) | typedef struct _THUNKLET
  function SEGPTR (line 1613) | static inline SEGPTR get_segptr( void *thunk )
  function BOOL (line 1622) | static BOOL THUNK_Init(void)
  function SetThunkletCallbackGlue16 (line 1648) | void WINAPI SetThunkletCallbackGlue16( FARPROC glueLS, SEGPTR glueSL )
  function THUNKLET (line 1658) | static THUNKLET *THUNK_FindThunklet( DWORD target, DWORD relay,
  function FARPROC (line 1678) | static FARPROC THUNK_AllocLSThunklet( SEGPTR target, DWORD relay,
  function SEGPTR (line 1712) | static SEGPTR THUNK_AllocSLThunklet( FARPROC target, DWORD relay,
  function BOOL16 (line 1746) | static BOOL16 IsLSThunklet( THUNKLET *thunk )
  function BOOL16 (line 1756) | BOOL16 WINAPI IsSLThunklet16( THUNKLET *thunk )
  function FARPROC (line 1768) | FARPROC WINAPI AllocLSThunkletSysthunk16( SEGPTR target,
  function SEGPTR (line 1779) | SEGPTR WINAPI AllocSLThunkletSysthunk16( FARPROC target,
  function FARPROC (line 1791) | FARPROC WINAPI AllocLSThunkletCallbackEx16( SEGPTR target,
  function SEGPTR (line 1808) | SEGPTR WINAPI AllocSLThunkletCallbackEx16( FARPROC target,
  function FARPROC (line 1826) | FARPROC WINAPI AllocLSThunkletCallback16( SEGPTR target, DWORD relay )
  function SEGPTR (line 1835) | SEGPTR WINAPI AllocSLThunkletCallback16( FARPROC target, DWORD relay )
  function FARPROC (line 1844) | FARPROC WINAPI FindLSThunkletCallback( SEGPTR target, DWORD relay )
  function SEGPTR (line 1861) | SEGPTR WINAPI FindSLThunkletCallback( FARPROC target, DWORD relay )
  function BOOL16 (line 1878) | BOOL16 WINAPI FreeThunklet16( DWORD unused1, DWORD unused2 )
  function INT16 (line 1898) | INT16 WINAPI RegisterCBClient16( INT16 wCBCId,
  function INT16 (line 1922) | INT16 WINAPI UnRegisterCBClient16( INT16 wCBCId,
  function InitCBClient16 (line 1942) | void WINAPI InitCBClient16( FARPROC glueLS )
  function CBClientGlueSL (line 1953) | void WINAPI CBClientGlueSL( CONTEXT *context )
  function CBClientThunkSL (line 1980) | void WINAPI CBClientThunkSL( CONTEXT *context )
  function CBClientThunkSLEx (line 2005) | void WINAPI CBClientThunkSLEx( CONTEXT *context )
  function SEGPTR (line 2051) | SEGPTR WINAPI Get16DLLAddress(HMODULE16 handle, LPSTR func_name)
  function DWORD (line 2088) | DWORD WINAPI GetWin16DOSEnv(void)
  function LPVOID (line 2097) | LPVOID WINAPI GetPK16SysVar(void)
  function DECLSPEC_HIDDEN (line 2108) | DECLSPEC_HIDDEN __regs_CommonUnimpStub( const char *name, int type )
  function HouseCleanLogicallyDeadHandles (line 2143) | void WINAPI HouseCleanLogicallyDeadHandles(void)
  function BOOL (line 2152) | BOOL WINAPI _KERNEL32_100(HANDLE threadid,DWORD exitcode,DWORD x)
  function DWORD (line 2165) | DWORD WINAPI _KERNEL32_99(DWORD x)
  function BOOL (line 2186) | BOOL WINAPI k32CharToOemBuffA(LPCSTR s, LPSTR d, DWORD len)
  function BOOL (line 2202) | BOOL WINAPI k32CharToOemA(LPCSTR s, LPSTR d)
  function BOOL (line 2211) | BOOL WINAPI k32OemToCharBuffA(LPCSTR s, LPSTR d, DWORD len)
  function BOOL (line 2227) | BOOL WINAPI k32OemToCharA(LPCSTR s, LPSTR d)
  function INT (line 2235) | INT WINAPI k32LoadStringA(HINSTANCE instance, UINT resource_id,
  function INT (line 2247) | INT WINAPI k32wvsprintfA(LPSTR buffer, LPCSTR spec, __ms_va_list args)
  function INT (line 2258) | INT WINAPIV k32wsprintfA(LPSTR buffer, LPCSTR spec, ...)
  function Catch16 (line 2275) | void WINAPI Catch16( SEGPTR lpbuf16, CONTEXT *context )
  function LONG (line 2311) | LONG WINAPI Throw16VectoredExceptionHandler(struct _EXCEPTION_POINTERS *...
  function LONG (line 2317) | LONG WINAPI Throw16ExceptionFilter(struct _EXCEPTION_POINTERS *Exception...
  function DWORD (line 2441) | DWORD WINAPI LoadLibraryEx32W16( LPCSTR lpszLibFile, DWORD hFile, DWORD ...
  function DWORD (line 2464) | DWORD WINAPI GetProcAddress32W16( DWORD hModule, LPCSTR lpszProc )
  function DWORD (line 2481) | DWORD WINAPI FreeLibrary32W16( DWORD hLibModule )
  function DWORD (line 2499) | static DWORD WOW_CallProc32W16( FARPROC proc32, DWORD nrofargs, DWORD *a...
  function DWORD (line 2521) | DWORD WINAPIV CallProc32W16( DWORD nrofargs, DWORD argconvmask, FARPROC ...
  function DWORD (line 2559) | DWORD WINAPIV CallProcEx32W16( DWORD nrofargs, DWORD argconvmask, FARPRO...
  function DWORD (line 2593) | DWORD WINAPIV WOW16Call(WORD x, WORD y, WORD z, VA_LIST16 args)

FILE: krnl386/timer.c
  function TIMER_Relay (line 71) | static void TIMER_Relay( CONTEXT *context, void *data )
  function TIMER_TimerProc (line 80) | static void CALLBACK TIMER_TimerProc( HWND     hwnd,
  function TIMER_DoSetTimer (line 122) | static void WINAPI TIMER_DoSetTimer( ULONG_PTR arg )
  function DOSVM_SetTimer (line 147) | void DOSVM_SetTimer( UINT ticks )
  function DOSVM_Int08Handler (line 163) | void WINAPI DOSVM_Int08Handler( CONTEXT *context )

FILE: krnl386/utthunk.c
  type UT16THUNK (line 35) | typedef struct
  type UT32THUNK (line 46) | typedef struct
  type UTINFO (line 59) | typedef struct _UTINFO
  function DWORD (line 85) | DWORD WINAPI UTGlue16( LPVOID lpBuff, DWORD dwUserDefined, SEGPTR *trans...
  function DWORD (line 107) | static DWORD WINAPI UTGlue32( FARPROC16 target, LPVOID lpBuff, DWORD dwU...
  function UTINFO (line 163) | static UTINFO *UTAlloc( HMODULE hModule, HMODULE16 hModule16,
  function UTFree (line 205) | static void UTFree( UTINFO *ut )
  function UTINFO (line 222) | static UTINFO *UTFind( HMODULE hModule )
  function BOOL (line 237) | BOOL WINAPI UTRegister( HMODULE hModule, LPSTR lpsz16BITDLL,
  function VOID (line 309) | VOID WINAPI UTUnRegister( HMODULE hModule )
  function WORD (line 330) | WORD WINAPI UTInit16( DWORD x1, DWORD x2, DWORD x3, DWORD x4 )

FILE: krnl386/vdd.c
  type vdd_module_t (line 6) | typedef struct
  function vdd_req (line 15) | void vdd_req(char func, CONTEXT *context)
  function BYTE (line 98) | BYTE WINAPI getAL()
  function BYTE (line 103) | BYTE WINAPI getAH()
  function WORD (line 108) | WORD WINAPI getAX()
  function DWORD (line 113) | DWORD WINAPI getEAX()
  function BYTE (line 118) | BYTE WINAPI getBL()
  function BYTE (line 123) | BYTE WINAPI getBH()
  function WORD (line 128) | WORD WINAPI getBX()
  function DWORD (line 133) | DWORD WINAPI getEBX()
  function BYTE (line 138) | BYTE WINAPI getCL()
  function BYTE (line 143) | BYTE WINAPI getCH()
  function WORD (line 148) | WORD WINAPI getCX()
  function DWORD (line 153) | DWORD WINAPI getECX()
  function BYTE (line 158) | BYTE WINAPI getDL()
  function BYTE (line 163) | BYTE WINAPI getDH()
  function WORD (line 168) | WORD WINAPI getDX()
  function DWORD (line 173) | DWORD WINAPI getEDX()
  function WORD (line 178) | WORD WINAPI getSP()
  function DWORD (line 183) | DWORD WINAPI getESP()
  function WORD (line 188) | WORD WINAPI getBP()
  function DWORD (line 193) | DWORD WINAPI getEBP()
  function WORD (line 198) | WORD WINAPI getSI()
  function DWORD (line 203) | DWORD WINAPI getESI()
  function WORD (line 208) | WORD WINAPI getDI()
  function DWORD (line 213) | DWORD WINAPI getEDI()
  function setAL (line 218) | void WINAPI setAL(BYTE val)
  function setAH (line 223) | void WINAPI setAH(BYTE val)
  function setAX (line 228) | void WINAPI setAX(WORD val)
  function setEAX (line 233) | void WINAPI setEAX(DWORD val)
  function setBL (line 238) | void WINAPI setBL(BYTE val)
  function setBH (line 243) | void WINAPI setBH(BYTE val)
  function setBX (line 248) | void WINAPI setBX(WORD val)
  function setEBX (line 253) | void WINAPI setEBX(DWORD val)
  function setCL (line 258) | void WINAPI setCL(BYTE val)
  function setCH (line 263) | void WINAPI setCH(BYTE val)
  function setCX (line 268) | void WINAPI setCX(DWORD val)
  function setECX (line 273) | void WINAPI setECX(BYTE val)
  function setDL (line 278) | void WINAPI setDL(BYTE val)
  function setDH (line 283) | void WINAPI setDH(BYTE val)
  function setDX (line 288) | void WINAPI setDX(WORD val)
  function setEDX (line 293) | void WINAPI setEDX(DWORD val)
  function setSP (line 298) | void WINAPI setSP(WORD val)
  function setESP (line 303) | void WINAPI setESP(DWORD val)
  function setBP (line 308) | void WINAPI setBP(WORD val)
  function setEBP (line 313) | void WINAPI setEBP(DWORD val)
  function setSI (line 318) | void WINAPI setSI(WORD val)
  function setESI (line 323) | void WINAPI setESI(DWORD val)
  function setDI (line 328) | void WINAPI setDI(WORD val)
  function setEDI (line 333) | void WINAPI setEDI(DWORD val)
  function WORD (line 338) | WORD WINAPI getDS()
  function WORD (line 343) | WORD WINAPI getES()
  function WORD (line 348) | WORD WINAPI getCS()
  function WORD (line 353) | WORD WINAPI getSS()
  function WORD (line 358) | WORD WINAPI getFS()
  function WORD (line 363) | WORD WINAPI getGS()
  function setDS (line 368) | void WINAPI setDS(WORD val)
  function setES (line 373) | void WINAPI setES(WORD val)
  function setCS (line 378) | void WINAPI setCS(WORD val)
  function setSS (line 383) | void WINAPI setSS(WORD val)
  function setFS (line 388) | void WINAPI setFS(WORD val)
  function setGS (line 393) | void WINAPI setGS(WORD val)
  function WORD (line 398) | WORD WINAPI getIP()
  function WORD (line 403) | WORD WINAPI getEIP()
  function setIP (line 408) | void WINAPI setIP(WORD val)
  function setEIP (line 413) | void WINAPI setEIP(DWORD val)
  function DWORD (line 418) | DWORD WINAPI getCF()
  function DWORD (line 423) | DWORD WINAPI getPF()
  function DWORD (line 428) | DWORD WINAPI getAF()
  function DWORD (line 433) | DWORD WINAPI getZF()
  function DWORD (line 438) | DWORD WINAPI getSF()
  function DWORD (line 443) | DWORD WINAPI getIF()
  function DWORD (line 448) | DWORD WINAPI getDF()
  function DWORD (line 453) | DWORD WINAPI getOF()
  function setCF (line 458) | void WINAPI setCF(DWORD val)
  function setPF (line 463) | void WINAPI setPF(DWORD val)
  function setAF (line 468) | void WINAPI setAF(DWORD val)
  function setZF (line 473) | void WINAPI setZF(DWORD val)
  function setSF (line 478) | void WINAPI setSF(DWORD val)
  function setIF (line 483) | void WINAPI setIF(DWORD val)
  function setDF (line 488) | void WINAPI setDF(DWORD val)
  function setOF (line 493) | void WINAPI setOF(DWORD val)
  type VDD_IO_HANDLERS (line 507) | typedef struct _VDD_IO_HANDLERS
  type VDD_IO_PORTRANGE (line 519) | typedef struct _VDD_IO_PORTRANGE
  type vdd_io_t (line 525) | typedef struct
  function BOOL (line 535) | BOOL WINAPI VDDInstallIOHook(HANDLE hvdd, WORD cPortRange, PVDD_IO_PORTR...
  function VDDDeInstallIOHook (line 557) | void WINAPI VDDDeInstallIOHook(HANDLE hvdd, WORD cPortRange, PVDD_IO_POR...
  function BOOL (line 574) | BOOL vdd_io_read(int port, int size, WORD *val, CONTEXT *ctx)
  function BOOL (line 607) | BOOL vdd_io_write(int port, int size, WORD val, CONTEXT *ctx)

FILE: krnl386/vga.c
  function set_timer_rate (line 656) | static void CALLBACK set_timer_rate( ULONG_PTR arg )
  function DWORD (line 664) | static DWORD CALLBACK VGA_TimerThread( ULONG_PTR Rate )
  function VGA_DeinstallTimer (line 671) | static void VGA_DeinstallTimer(void)
  function VGA_InstallTimer (line 707) | static void VGA_InstallTimer(unsigned Rate)
  function BOOL (line 721) | static BOOL VGA_IsTimerRunning(void)
  function HANDLE (line 726) | static HANDLE VGA_AlphaConsole(void)
  type ModeSet (line 740) | typedef struct {
  function VGA_SyncWindow (line 752) | static void VGA_SyncWindow( BOOL target_is_fb )
  function VGA_DoExit (line 771) | static void WINAPI VGA_DoExit(ULONG_PTR arg)
  function VGA_DoSetMode (line 784) | static void WINAPI VGA_DoSetMode(ULONG_PTR arg)
  function VGA_MODE (line 809) | const VGA_MODE *VGA_GetModeInfo(WORD mode)
  function BOOL (line 827) | static BOOL VGA_SetGraphicMode(WORD mode)
  function BOOL (line 907) | BOOL VGA_SetMode(WORD mode)
  function BOOL (line 953) | BOOL VGA_GetMode(unsigned *Height, unsigned *Width, unsigned *Depth)
  function VGA_Exit (line 965) | static void VGA_Exit(void)
  function VGA_SetPalette (line 970) | void VGA_SetPalette(PALETTEENTRY *pal, int start, int len)
  function VGA_SetColor16 (line 985) | void VGA_SetColor16(int reg,int color)
  function VGA_GetColor16 (line 996) | char VGA_GetColor16(int reg)
  function VGA_Set16Palette (line 1004) | void VGA_Set16Palette(char *Table)
  function VGA_Get16Palette (line 1019) | void VGA_Get16Palette(char *Table)
  function LPSTR (line 1028) | static LPSTR VGA_Lock(unsigned*Pitch,unsigned*Height,unsigned*Width,unsi...
  function VGA_Unlock (line 1052) | static void VGA_Unlock(void)
  function paint_bitmap (line 1066) | static void paint_bitmap()
  function VGA_SetWindowStart (line 1109) | void VGA_SetWindowStart(int start)
  function VGA_GetWindowStart (line 1135) | int VGA_GetWindowStart(void)
  function VGA_DoShowMouse (line 1146) | static void WINAPI VGA_DoShowMouse( ULONG_PTR show )
  function VGA_ShowMouse (line 1165) | void VGA_ShowMouse( BOOL show )
  function VGA_UpdatePalette (line 1180) | void VGA_UpdatePalette(void)
  function VGA_SetBright (line 1216) | void VGA_SetBright(BOOL bright)
  function VGA_SetEnabled (line 1230) | static void VGA_SetEnabled(BOOL enabled)
  function VGA_SetPaletteIndex (line 1251) | void VGA_SetPaletteIndex(unsigned index)
  function VGA_WritePixel (line 1266) | void VGA_WritePixel(unsigned color, unsigned page, unsigned col, unsigne...
  function VGA_PrepareVideoMemCopy (line 1294) | static void VGA_PrepareVideoMemCopy(unsigned Xres, unsigned Yres)
  function VGA_SetAlphaMode (line 1324) | void VGA_SetAlphaMode(unsigned Xres,unsigned Yres)
  function VGA_InitAlphaMode (line 1353) | void VGA_InitAlphaMode(unsigned*Xres,unsigned*Yres)
  function BOOL (line 1383) | BOOL VGA_GetAlphaMode(unsigned*Xres,unsigned*Yres)
  function VGA_SetCursorShape (line 1393) | void VGA_SetCursorShape(unsigned char start_options, unsigned char end)
  function VGA_SetCursorPos (line 1408) | void VGA_SetCursorPos(unsigned X,unsigned Y)
  function VGA_GetCursorPos (line 1414) | void VGA_GetCursorPos(unsigned*X,unsigned*Y)
  function VGA_PutCharAt (line 1420) | static void VGA_PutCharAt(unsigned x, unsigned y, BYTE ascii, int attr)
  function VGA_WriteChars (line 1436) | void VGA_WriteChars(unsigned X,unsigned Y,unsigned ch,int attr,int count)
  function VGA_PutChar (line 1446) | void VGA_PutChar(BYTE ascii)
  function VGA_ClearText (line 1505) | void VGA_ClearText(unsigned row1, unsigned col1,
  function VGA_ScrollUpText (line 1528) | void VGA_ScrollUpText(unsigned row1,  unsigned col1,
  function VGA_ScrollDownText (l
Copy disabled (too large) Download .json
Condensed preview — 1307 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (22,985K chars).
[
  {
    "path": ".gitattributes",
    "chars": 2583,
    "preview": "###############################################################################\n# Set default behavior to automatically "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1131,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\nTry the latest v"
  },
  {
    "path": ".gitignore",
    "chars": 2856,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
  },
  {
    "path": "BuildToolProperty.props",
    "chars": 795,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 4239,
    "preview": "cmake_minimum_required(VERSION 3.10.2)\n#-Dinline=__inline\nproject(winevdm)\nset(ASM_TOOL_DIR )\n# prevent wine error\nif (N"
  },
  {
    "path": "LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "PropertySheet.props",
    "chars": 698,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild"
  },
  {
    "path": "README.md",
    "chars": 2604,
    "preview": "# winevdm on 64-bit Windows\r\n\r\n![screenshot](screenshot.PNG)\r\n\r\n[Download stable version](https://github.com/otya128/win"
  },
  {
    "path": "READMEJP.md",
    "chars": 828,
    "preview": "# winevdm on windows(64bit)\n<img src=\"screenshot.PNG\">\n\n[Download](https://github.com/otya128/winevdm/releases)\n\nwinevdm"
  },
  {
    "path": "appveyor.yml",
    "chars": 3698,
    "preview": "version: dev{build}\nimage: Visual Studio 2017\nconfiguration: Release\nenvironment:\n  matrix:\n  - THIS_BUILD_IS_RECOMMENDE"
  },
  {
    "path": "avifile/CMakeLists.txt",
    "chars": 519,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(avifile SHARED ${SOURCE} ${CMAKE_SOURCE_DIR}/dummy.c ${CMAKE_CURRENT_BINARY"
  },
  {
    "path": "avifile/Makefile.in",
    "chars": 99,
    "preview": "MODULE    = avifile.dll16\nIMPORTS   = avifil32\nEXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll\n"
  },
  {
    "path": "avifile/avifile.def",
    "chars": 141,
    "preview": "; File generated automatically from avifile\\avifile.dll16.spec; do not edit!\n\nLIBRARY avifile.dll16\n\nEXPORTS\n  _wine_spe"
  },
  {
    "path": "avifile/avifile.dll16.spec",
    "chars": 3296,
    "preview": "# I'm just using \"long\" instead of \"ptr\" for the interface pointers,\n# because they are 32-bit pointers, not converted t"
  },
  {
    "path": "avifile/avifile.vcxproj",
    "chars": 5690,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "avifile/main.c",
    "chars": 7138,
    "preview": "/*\n * Wrapper for 16 bit avifile functions\n *\n * Copyright 2016 Michael Müller\n *\n * This library is free software; you "
  },
  {
    "path": "comm/CMakeLists.txt",
    "chars": 487,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(comm SHARED ${SOURCE} ${PROJECT_SOURCE_DIR}/dummy.c ${CMAKE_CURRENT_BINARY_"
  },
  {
    "path": "comm/Makefile.in",
    "chars": 44,
    "preview": "MODULE    = comm.drv16\nEXTRADLLFLAGS = -m16\n"
  },
  {
    "path": "comm/comm.def",
    "chars": 141,
    "preview": "; File generated automatically from comm\\comm.drv16.spec; do not edit!\n\nLIBRARY comm.drv16\n\nEXPORTS\n  _wine_spec_dos_hea"
  },
  {
    "path": "comm/comm.drv16.spec",
    "chars": 439,
    "preview": "  1 stub INICOM\n  2 stub SETCOM\n  3 stub SETQUE\n  4 stub RECCOM\n  5 stub SNDCOM\n  6 stub CTX\n  7 stub TRMCOM\n  8 stub ST"
  },
  {
    "path": "comm/comm.vcxproj",
    "chars": 5987,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "commctrl/CMakeLists.txt",
    "chars": 503,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(commctrl SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/commctrl.def commctrl"
  },
  {
    "path": "commctrl/commctrl.c",
    "chars": 17233,
    "preview": "#include <Windows.h>\n#include <CommCtrl.h>\n#include \"wine/windef16.h\"\n#include \"wine/winbase16.h\"\n#include \"wine/winuser"
  },
  {
    "path": "commctrl/commctrl.def",
    "chars": 144,
    "preview": "; File generated automatically from commctrl\\commctrl.dll16.spec; do not edit!\n\nLIBRARY commctrl.dll16\n\nEXPORTS\n  _wine_"
  },
  {
    "path": "commctrl/commctrl.dll16.spec",
    "chars": 1611,
    "preview": "16 stub CREATEUPDOWNCONTROL\n44 stub IMAGELIST_SETBKCOLOR\n339 stub DPA_SEARCH\n332 stub DPA_GETPTR\n336 stub DPA_DELETEPTR\n"
  },
  {
    "path": "commctrl/commctrl.vcxproj",
    "chars": 5778,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "commdlg/CMakeLists.txt",
    "chars": 496,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(commdlg SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/commdlg.def commdlg.dl"
  },
  {
    "path": "commdlg/cdlg16.h",
    "chars": 6886,
    "preview": "/*\n * Common Dialog Boxes interface (16 bit implementation)\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrech"
  },
  {
    "path": "commdlg/colordlg.c",
    "chars": 2572,
    "preview": "/*\n * COMMDLG - Color Dialog\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrecht Kleine\n *\n * This library is "
  },
  {
    "path": "commdlg/commdlg.def",
    "chars": 167,
    "preview": "; File generated automatically from commdlg.dll16.spec; do not edit!\n\nLIBRARY commdlg.dll16\n\nEXPORTS\n  _wine_spec_dos_he"
  },
  {
    "path": "commdlg/commdlg.dll16.spec",
    "chars": 1520,
    "preview": "1   pascal -ret16 GetOpenFileName(segptr) GetOpenFileName16\n2   pascal -ret16 GetSaveFileName(segptr) GetSaveFileName16\n"
  },
  {
    "path": "commdlg/commdlg.rc",
    "chars": 10106,
    "preview": "#include \"resource.h\"\n\n#include \"winresrc.h\"\n\n/*  64 KiB dummy resource */\nIDB_BITMAP1             BITMAP               "
  },
  {
    "path": "commdlg/commdlg.vcxproj",
    "chars": 6485,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "commdlg/commdlg.vcxproj.filters",
    "chars": 2045,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "commdlg/filedlg.c",
    "chars": 13936,
    "preview": "/*\n * COMMDLG - File Dialogs\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrecht Kleine\n *\n * This library is "
  },
  {
    "path": "commdlg/finddlg.c",
    "chars": 14127,
    "preview": "/*\n * COMMDLG - 16 bits Find & Replace Text Dialogs\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrecht Kleine"
  },
  {
    "path": "commdlg/fontdlg.c",
    "chars": 5852,
    "preview": "/*\n * COMMDLG - Font Dialog\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrecht Kleine\n *\n * This library is f"
  },
  {
    "path": "commdlg/printdlg.c",
    "chars": 10785,
    "preview": "/*\n * COMMDLG - Print Dialog\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1996 Albrecht Kleine\n * Copyright 1999 Klaa"
  },
  {
    "path": "commdlg/resource.h",
    "chars": 418,
    "preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ ŐꂽCN[h t@CB\n// commdlg.rc Ŏgp\n//\n#define IDB_BITMAP1                     1"
  },
  {
    "path": "compobj/CMakeLists.txt",
    "chars": 513,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(compobj SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/compobj.def compobj.dl"
  },
  {
    "path": "compobj/Makefile.in",
    "chars": 127,
    "preview": "MODULE    = compobj.dll16\nIMPORTS   = uuid ole32 advapi32\nEXTRADLLFLAGS = -m16 -Wb,--main-module,ole32.dll\n\nC_SRCS = com"
  },
  {
    "path": "compobj/compobj.c",
    "chars": 30539,
    "preview": "/*\n * 16 bit ole functions\n *\n * Copyright 1995 Martin von Loewis\n * Copyright 1998 Justin Bradford\n * Copyright 1999 Fr"
  },
  {
    "path": "compobj/compobj.def",
    "chars": 254,
    "preview": "; File generated automatically from ..\\compobj\\compobj.dll16.spec; do not edit!\n\nLIBRARY compobj.dll16\n\nEXPORTS\n  _wine_"
  },
  {
    "path": "compobj/compobj.dll16.spec",
    "chars": 10166,
    "preview": "1 pascal CoBuildVersion() CoBuildVersion16\n2 pascal CoInitialize(long) CoInitialize16\n3 pascal CoUninitialize() CoUninit"
  },
  {
    "path": "compobj/compobj.vcxproj",
    "chars": 5818,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "convertwinefile/convertwinefile.vcxproj",
    "chars": 7845,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "convertwinefile/convertwinefile.vcxproj.filters",
    "chars": 915,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "convertwinefile/main.c",
    "chars": 18209,
    "preview": "/*\n * Converts wine DLL source Makefiles to MSVC projects.\n * \n * Copyright (C) 2017 otya\n */\n#include <stdio.h>\n#includ"
  },
  {
    "path": "convspec/CMakeLists.txt",
    "chars": 250,
    "preview": "file(GLOB SOURCE *.c)\nadd_executable(convspec ${SOURCE})\ninclude_directories(../wine)\nadd_definitions(-D__i386__ -Dpopen"
  },
  {
    "path": "convspec/build.h",
    "chars": 14053,
    "preview": "/*\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyright 1995, 1996, 1997 Alexandre Julli"
  },
  {
    "path": "convspec/convspec.c",
    "chars": 4021,
    "preview": "// -*- tab-width: 4 -*-\n// # vim: set expandtab: ts=4 \n// Converts Win32 wine spec files to Win16 specs. Based on winebu"
  },
  {
    "path": "convspec/convspec.vcxproj",
    "chars": 5168,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "convspec/convspec.vcxproj.filters",
    "chars": 1785,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "convspec/import.c",
    "chars": 53500,
    "preview": "/*\n * DLL imports support\n *\n * Copyright 2000, 2004 Alexandre Julliard\n * Copyright 2000 Eric Pouech\n *\n * This library"
  },
  {
    "path": "convspec/main.c.h",
    "chars": 22633,
    "preview": "/*\n * winebuild main function\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyright 19"
  },
  {
    "path": "convspec/parser.c",
    "chars": 31607,
    "preview": "/*\n * Spec file parser\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyright 1995, 199"
  },
  {
    "path": "convspec/relay.c",
    "chars": 30464,
    "preview": "/*\n * Relay calls helper routines\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyrigh"
  },
  {
    "path": "convspec/res16.c",
    "chars": 9827,
    "preview": "/*\n * Builtin dlls resource support\n *\n * Copyright 2000 Alexandre Julliard\n *\n * This library is free software; you can"
  },
  {
    "path": "convspec/res32.c",
    "chars": 22646,
    "preview": "/*\n * Builtin dlls resource support\n *\n * Copyright 2000 Alexandre Julliard\n *\n * This library is free software; you can"
  },
  {
    "path": "convspec/spec16.c",
    "chars": 35869,
    "preview": "/*\n * 16-bit spec files\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyright 1995, 19"
  },
  {
    "path": "convspec/spec32.c",
    "chars": 38332,
    "preview": "/*\n * 32-bit spec files\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Martin von Loewis\n * Copyright 1995, 19"
  },
  {
    "path": "convspec/utils.c",
    "chars": 30484,
    "preview": "/*\n * Small utility functions for winebuild\n *\n * Copyright 2000 Alexandre Julliard\n *\n * This library is free software;"
  },
  {
    "path": "convspec/ver.h",
    "chars": 2900,
    "preview": "unsigned char ver_res[] = {\n  0xff, 0x10, 0x00, 0xff, 0x01, 0x00, 0x30, 0x00, 0xc0, 0x01, 0x00, 0x00,\n  0xc0, 0x01, 0x34"
  },
  {
    "path": "ctl3d/CMakeLists.txt",
    "chars": 472,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(ctl3d SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ctl3d.def ctl3d.dll16.ob"
  },
  {
    "path": "ctl3d/Makefile.in",
    "chars": 112,
    "preview": "MODULE    = ctl3d.dll16\nIMPORTS   = user32\nEXTRADLLFLAGS = -m16 -Wb,--main-module,ctl3d32.dll\n\nC_SRCS = ctl3d.c\n"
  },
  {
    "path": "ctl3d/ctl3d.c",
    "chars": 905,
    "preview": "/*\n * 16-bit CTL3D and CTL3DV2 API stubs.\n *\n * Copyright (c) 2003 Dmitry Timoshkov\n *\n * This library is free software;"
  },
  {
    "path": "ctl3d/ctl3d.def",
    "chars": 138,
    "preview": "; File generated automatically from ..\\ctl3d\\ctl3d.dll16.spec; do not edit!\n\nLIBRARY ctl3d.dll16\n\nEXPORTS\n  _wine_spec_d"
  },
  {
    "path": "ctl3d/ctl3d.dll16.spec",
    "chars": 1516,
    "preview": "1  pascal -ret16 Ctl3dGetVer() Ctl3dGetVer16\n2  pascal -ret16 Ctl3dSubclassDlg(word word) Ctl3dSubclassDlg16\n3  pascal -"
  },
  {
    "path": "ctl3d/ctl3d.vcxproj",
    "chars": 6073,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "ctl3dv2/CMakeLists.txt",
    "chars": 483,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(ctl3dv2 SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ctl3dv2.def ctl3dv2.dl"
  },
  {
    "path": "ctl3dv2/Makefile.in",
    "chars": 114,
    "preview": "MODULE    = ctl3dv2.dll16\nIMPORTS   = user32\nEXTRADLLFLAGS = -m16 -Wb,--main-module,ctl3d32.dll\n\nC_SRCS = ctl3d.c\n"
  },
  {
    "path": "ctl3dv2/ctl3d.c",
    "chars": 12617,
    "preview": "/*\n * 16-bit CTL3D and CTL3DV2 API stubs.\n *\n * Copyright (c) 2003 Dmitry Timoshkov\n *\n * This library is free software;"
  },
  {
    "path": "ctl3dv2/ctl3dv2.def",
    "chars": 651,
    "preview": "; File generated automatically from ..\\ctl3dv2\\ctl3dv2.dll16.spec; do not edit!\n\nLIBRARY ctl3dv2.dll16\n\nEXPORTS\n  _wine_"
  },
  {
    "path": "ctl3dv2/ctl3dv2.dll16.spec",
    "chars": 2800,
    "preview": "1  pascal -ret16 Ctl3dGetVer() Ctl3dGetVer16\n2  pascal -ret16 Ctl3dSubclassDlg(word word) Ctl3dSubclassDlg16\n3  pascal -"
  },
  {
    "path": "ctl3dv2/ctl3dv2.vcxproj",
    "chars": 6145,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "ddeml/CMakeLists.txt",
    "chars": 464,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(ddeml SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/ddeml.def ddeml.dll16.ob"
  },
  {
    "path": "ddeml/Makefile.in",
    "chars": 82,
    "preview": "MODULE    = ddeml.dll16\nIMPORTS   = user32\nEXTRADLLFLAGS = -m16\n\nC_SRCS = ddeml.c\n"
  },
  {
    "path": "ddeml/ddeml.c",
    "chars": 17591,
    "preview": "/*\n * DDEML library\n *\n * Copyright 1997 Alexandre Julliard\n * Copyright 1997 Len White\n * Copyright 1999 Keith Matthews"
  },
  {
    "path": "ddeml/ddeml.def",
    "chars": 138,
    "preview": "; File generated automatically from ..\\ddeml\\ddeml.dll16.spec; do not edit!\n\nLIBRARY ddeml.dll16\n\nEXPORTS\n  _wine_spec_d"
  },
  {
    "path": "ddeml/ddeml.dll16.spec",
    "chars": 1737,
    "preview": "2 pascal -ret16 DdeInitialize(ptr segptr long long) DdeInitialize16\n3 pascal -ret16 DdeUninitialize(long) DdeUninitializ"
  },
  {
    "path": "ddeml/ddeml.vcxproj",
    "chars": 6348,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "dispdib/CMakeLists.txt",
    "chars": 478,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(dispdib SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/dispdib.def dispdib.dl"
  },
  {
    "path": "dispdib/Makefile.in",
    "chars": 67,
    "preview": "MODULE    = dispdib.dll16\nEXTRADLLFLAGS = -m16\n\nC_SRCS = dispdib.c\n"
  },
  {
    "path": "dispdib/dispdib.c",
    "chars": 12757,
    "preview": "/*\n * DISPDIB.dll\n *\n * Copyright 1998 Ove Kåven (with some help from Marcus Meissner)\n *\n * This library is free softwa"
  },
  {
    "path": "dispdib/dispdib.def",
    "chars": 150,
    "preview": "; File generated automatically from dispdib\\dispdib.dll16.spec; do not edit!\n\nLIBRARY dispdib.dll16\n\nEXPORTS\n  _wine_spe"
  },
  {
    "path": "dispdib/dispdib.dll16.spec",
    "chars": 52,
    "preview": "1 pascal -ret16 DisplayDib(ptr ptr word) DisplayDib\n"
  },
  {
    "path": "dispdib/dispdib.vcxproj",
    "chars": 6451,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "display/CMakeLists.txt",
    "chars": 478,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(display SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/display.def display.dr"
  },
  {
    "path": "display/Makefile.in",
    "chars": 109,
    "preview": "MODULE    = display.drv16\nIMPORTS   = user32\n\nEXTRADLLFLAGS = -m16\n\nC_SRCS = display.c\n\nRC_SRCS = display.rc\n"
  },
  {
    "path": "display/display.c",
    "chars": 2821,
    "preview": "/*\n * DISPLAY driver\n *\n * Copyright 1998 Ulrich Weigand\n *\n * This library is free software; you can redistribute it an"
  },
  {
    "path": "display/display.def",
    "chars": 141,
    "preview": "; File generated automatically from display\\display.drv16.spec; do not edit!\n\nLIBRARY display.drv16\n\nEXPORTS\n  _wine_spe"
  },
  {
    "path": "display/display.drv16.spec",
    "chars": 1368,
    "preview": "1   stub BitBlt\n2   stub ColorInfo\n3   stub Control\n4   stub Disable\n5   stub Enable\n6   stub EnumFonts\n7   stub EnumObj"
  },
  {
    "path": "display/display.rc",
    "chars": 2007,
    "preview": "/*\n * resource file for DISPLAY driver dll\n *\n * Copyright 1999 Andreas Mohr\n *\n * This library is free software; you ca"
  },
  {
    "path": "display/display.vcxproj",
    "chars": 5762,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "dummy.c",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "gdi/CMakeLists.txt",
    "chars": 476,
    "preview": "file(GLOB SOURCE *.c *.cpp)\nadd_library(gdi SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/gdi.def gdi.exe16.obj)\ninclude_"
  },
  {
    "path": "gdi/bidi.c",
    "chars": 10965,
    "preview": "/*\n * Win16 BiDi functions\n * Copyright 2000 Erez Volk\n *\n * This library is free software; you can redistribute it and/"
  },
  {
    "path": "gdi/env.c",
    "chars": 4085,
    "preview": "/*\n * Driver Environment functions\n *\n * Note: This has NOTHING to do with the task/process environment!\n *\n * Copyright"
  },
  {
    "path": "gdi/gdi.c",
    "chars": 171278,
    "preview": "/*\n * GDI 16-bit functions\n *\n * Copyright 2002 Alexandre Julliard\n *\n * This library is free software; you can redistri"
  },
  {
    "path": "gdi/gdi.def",
    "chars": 159,
    "preview": "; File generated automatically from gdi.exe16.spec; do not edit!\n\nLIBRARY gdi.exe16\n\nEXPORTS\n  _wine_spec_dos_header;=.L"
  },
  {
    "path": "gdi/gdi.exe16.spec",
    "chars": 24301,
    "preview": "1   pascal   SetBkColor(word long) SetBkColor16\n2   pascal -ret16 SetBkMode(word word) SetBkMode16\n3   pascal -ret16 Set"
  },
  {
    "path": "gdi/gdi.vcxproj",
    "chars": 6300,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "gdi/gdi.vcxproj.filters",
    "chars": 1537,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "gdi/metafile.c",
    "chars": 11132,
    "preview": "/*\n * Metafile functions\n *\n * Copyright  David W. Metcalfe, 1994\n * Copyright  Niels de Carpentier, 1996\n * Copyright  "
  },
  {
    "path": "gdi/printdrv.c",
    "chars": 19745,
    "preview": "/*\n * Implementation of some printer driver bits\n *\n * Copyright 1996 John Harvey\n * Copyright 1998 Huw Davies\n * Copyri"
  },
  {
    "path": "gvm/CMakeLists.txt",
    "chars": 219,
    "preview": "add_library(gvm SHARED gvm.c)\ninclude_directories(../wine)\nadd_definitions(-D__i386__ -DNtCurrentTeb=NtCurrentTeb__ -DDE"
  },
  {
    "path": "gvm/gvm-interface.h",
    "chars": 21370,
    "preview": "/*\n * QEMU GVM support\n *\n * Copyright IBM, Corp. 2008\n *\n * Authors:\n *  Anthony Liguori   <aliguori@us.ibm.com>\n *\n * "
  },
  {
    "path": "gvm/gvm.c",
    "chars": 37727,
    "preview": "#include \"gvm.h\"\n\n#include \"../krnl386/kernel16_private.h\"\n#include \"wownt32.h\"\n\nBOOL initflag;\nUINT8 *mem;\n#define KRNL"
  },
  {
    "path": "gvm/gvm.def",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "gvm/gvm.h",
    "chars": 4881,
    "preview": "#pragma once\n#include <stdint.h>\n#include \"gvm-interface.h\"\n#include <stdio.h>\n#include <windows.h>\n\nstruct gvm_vcpu_sta"
  },
  {
    "path": "gvm/gvm.vcxproj",
    "chars": 6167,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "gvm/gvm.vcxproj.filters",
    "chars": 1223,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "haxmvm/CMakeLists.txt",
    "chars": 231,
    "preview": "add_library(haxmvm SHARED haxmvm.c)\ninclude_directories(../wine)\nadd_definitions(-D__i386__ -DNtCurrentTeb=NtCurrentTeb_"
  },
  {
    "path": "haxmvm/haxmvm.c",
    "chars": 53651,
    "preview": "#include \"haxmvm.h\"\n\n#include \"../krnl386/kernel16_private.h\"\n\nBOOL initflag;\nUINT8 *mem;\n#define KRNL386 \"krnl386.exe16"
  },
  {
    "path": "haxmvm/haxmvm.h",
    "chars": 11199,
    "preview": "#pragma once\n#include <stdio.h>\n#include <windows.h>\n#include <winioctl.h>\n// Signed Types\ntypedef signed char         i"
  },
  {
    "path": "haxmvm/haxmvm.vcxproj",
    "chars": 9340,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "haxmvm/haxmvm.vcxproj.filters",
    "chars": 1035,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "install.inf",
    "chars": 945,
    "preview": "[Version]\nSignature=\"$Windows NT$\"\n\n[DefaultInstall.ntamd64]\nDelReg=DefaultInstall.ntamd64.DelReg\nAddReg=DefaultInstall."
  },
  {
    "path": "installw.inf",
    "chars": 946,
    "preview": "[Version]\nSignature=\"$Windows NT$\"\n\n[DefaultInstall.ntamd64]\nDelReg=DefaultInstall.ntamd64.DelReg\nAddReg=DefaultInstall."
  },
  {
    "path": "keyboard/CMakeLists.txt",
    "chars": 485,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(keyboard SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/keyboard.def keyboard"
  },
  {
    "path": "keyboard/keyboard.c",
    "chars": 5182,
    "preview": "/*\n * KEYBOARD driver\n *\n * Copyright 1993 Bob Amstadt\n * Copyright 1996 Albrecht Kleine\n * Copyright 1997 David Faure\n "
  },
  {
    "path": "keyboard/keyboard.def",
    "chars": 135,
    "preview": "; File generated automatically from keyboard.drv16.spec; do not edit!\n\nLIBRARY keyboard.drv16\n\nEXPORTS\n  _wine_spec_dos_"
  },
  {
    "path": "keyboard/keyboard.drv16.spec",
    "chars": 1069,
    "preview": "1   pascal -ret16 Inquire(ptr) Inquire16\n2   pascal -ret16 Enable(segptr ptr) Enable16\n3   pascal -ret16 Disable() Disab"
  },
  {
    "path": "keyboard/keyboard.vcxproj",
    "chars": 6005,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "keyboard/keyboard.vcxproj.filters",
    "chars": 1271,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "krnl386/CMakeLists.txt",
    "chars": 564,
    "preview": "file(GLOB SOURCE *.c *.cpp)\nadd_library(krnl386 SHARED ${SOURCE} krnl386.exe16.obj ${CMAKE_CURRENT_BINARY_DIR}/krnl386.d"
  },
  {
    "path": "krnl386/Makefile.in",
    "chars": 726,
    "preview": "MODULE    = krnl386.exe16\nIMPORTLIB = kernel\nIMPORTS   = winecrt0 kernel32 ntdll\nDELAYIMPORTS = ddraw dsound user32\nEXTR"
  },
  {
    "path": "krnl386/atom.c",
    "chars": 9789,
    "preview": "/*\n * Atom table functions - 16 bit variant\n *\n * Copyright 1993, 1994, 1995 Alexandre Julliard\n *\n * This library is fr"
  },
  {
    "path": "krnl386/compat.c",
    "chars": 2716,
    "preview": "#include <Windows.h>\n#include \"kernel16_private.h\"\n\n// this only currently will get the flags for the first task\n// it m"
  },
  {
    "path": "krnl386/conf.c",
    "chars": 1474,
    "preview": "#include <Windows.h>\nstatic BOOL init;\n\nstatic CHAR filename[MAX_PATH];\nstatic CRITICAL_SECTION critical_section;\nDWORD "
  },
  {
    "path": "krnl386/dma.c",
    "chars": 12281,
    "preview": "/*\n * DMA Emulation\n *\n * Copyright 2002 Christian Costa\n *\n * This library is free software; you can redistribute it an"
  },
  {
    "path": "krnl386/dosaspi.c",
    "chars": 7316,
    "preview": "/*\n * Copyright 2000 David Elliott\n *\n * This library is free software; you can redistribute it and/or\n * modify it unde"
  },
  {
    "path": "krnl386/dosdev.c",
    "chars": 14707,
    "preview": "/*\n * DOS devices\n *\n * Copyright 1999 Ove Kåven\n *\n * This library is free software; you can redistribute it and/or\n * "
  },
  {
    "path": "krnl386/dosexe.c",
    "chars": 22566,
    "preview": "/*\n * DOS (MZ) loader\n *\n * Copyright 1998 Ove Kåven\n *\n * This library is free software; you can redistribute it and/or"
  },
  {
    "path": "krnl386/dosexe.h",
    "chars": 20040,
    "preview": "/*\n * DOS EXE loader\n *\n * Copyright 1998 Ove Kåven\n *\n * This library is free software; you can redistribute it and/or\n"
  },
  {
    "path": "krnl386/dosmem.c",
    "chars": 21189,
    "preview": "/*\n * DOS memory emulation\n *\n * Copyright 1995 Alexandre Julliard\n * Copyright 1996 Marcus Meissner\n *\n * This library "
  },
  {
    "path": "krnl386/dosvm.c",
    "chars": 30134,
    "preview": "/*\n * DOS Virtual Machine\n *\n * Copyright 1998 Ove Kåven\n * Copyright 2002 Jukka Heinonen\n *\n * This library is free sof"
  },
  {
    "path": "krnl386/error.c",
    "chars": 8421,
    "preview": "/*\n * Log internal errors\n *\n * Copyright 1997 Andrew Taylor\n *\n * This library is free software; you can redistribute i"
  },
  {
    "path": "krnl386/file.c",
    "chars": 67284,
    "preview": "/*\n * File handling functions\n *\n * Copyright 1993 John Burton\n * Copyright 1996 Alexandre Julliard\n *\n * This library i"
  },
  {
    "path": "krnl386/fpu.c",
    "chars": 6980,
    "preview": "/*\n * DOS interrupt 34->3e handlers.  All FPU interrupt code should be\n * moved into this file.\n *\n * Copyright 2002 Rob"
  },
  {
    "path": "krnl386/global.c",
    "chars": 44561,
    "preview": "/*\n * Global heap functions\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you can redistr"
  },
  {
    "path": "krnl386/instr.c",
    "chars": 31806,
    "preview": "/*\n * Emulation of privileged instructions\n *\n * Copyright 1995 Alexandre Julliard\n * Copyright 2005 Ivan Leo Puoti\n * C"
  },
  {
    "path": "krnl386/int09.c",
    "chars": 7577,
    "preview": "/*\n * DOS interrupt 09h handler (IRQ1 - KEYBOARD)\n *\n * Copyright 1999 Ove Kåven\n *\n * This library is free software; yo"
  },
  {
    "path": "krnl386/int10.c",
    "chars": 50963,
    "preview": "/*\n * BIOS interrupt 10h handler\n *\n * Copyright 1998 Ove Kåven\n * Copyright 1998 Joseph Pranevich\n *\n * This library is"
  },
  {
    "path": "krnl386/int13.c",
    "chars": 8826,
    "preview": "/*\n * BIOS interrupt 13h handler\n *\n * Copyright 1997 Andreas Mohr\n *\n * This library is free software; you can redistri"
  },
  {
    "path": "krnl386/int15.c",
    "chars": 5014,
    "preview": "/*\n * BIOS interrupt 15h handler\n *\n * Copyright 1997 Jan Willamowius\n *\n * This library is free software; you can redis"
  },
  {
    "path": "krnl386/int16.c",
    "chars": 6087,
    "preview": "/*\n * DOS interrupt 16h handler\n *\n * Copyright 1998 Joseph Pranevich\n * Copyright 1999 Ove Kåven\n *\n * This library is "
  },
  {
    "path": "krnl386/int21.c",
    "chars": 183274,
    "preview": "/*\n * DOS interrupt 21h handler\n *\n * Copyright 1993, 1994 Erik Bos\n * Copyright 1996 Alexandre Julliard\n * Copyright 19"
  },
  {
    "path": "krnl386/int25.c",
    "chars": 3404,
    "preview": "/*\n * DOS interrupt 25h handler\n *\n * Copyright 1997 Andreas Mohr\n *\n * This library is free software; you can redistrib"
  },
  {
    "path": "krnl386/int26.c",
    "chars": 3047,
    "preview": "/*\n * DOS interrupt 26h handler\n *\n * Copyright 1997 Andreas Mohr\n *\n * This library is free software; you can redistrib"
  },
  {
    "path": "krnl386/int2f.c",
    "chars": 37168,
    "preview": "/* -*- tab-width: 8; c-basic-offset: 4 -*- */\n/*\n * DOS interrupt 2fh handler\n *\n *  Cdrom - device driver emulation - A"
  },
  {
    "path": "krnl386/int31.c",
    "chars": 50474,
    "preview": "/*\n * DPMI 0.9 emulation\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you can redistribu"
  },
  {
    "path": "krnl386/int33.c",
    "chars": 9543,
    "preview": "/*\n * DOS interrupt 33h handler\n *\n * Copyright 1999 Ove Kåven\n *\n * This library is free software; you can redistribute"
  },
  {
    "path": "krnl386/int67.c",
    "chars": 13845,
    "preview": "/*\n * Int67 (EMS) emulation\n *\n * Copyright 2002 Jukka Heinonen\n *\n * This library is free software; you can redistribut"
  },
  {
    "path": "krnl386/interrupts.c",
    "chars": 36256,
    "preview": "/*\n * Interrupt emulation\n *\n * Copyright 2002 Jukka Heinonen\n *\n * This library is free software; you can redistribute "
  },
  {
    "path": "krnl386/ioports.c",
    "chars": 34407,
    "preview": "/*\n * Emulation of processor ioports.\n *\n * Copyright 1995 Morten Welinder\n * Copyright 1998 Andreas Mohr, Ove Kaaven\n *"
  },
  {
    "path": "krnl386/kernel.c",
    "chars": 35852,
    "preview": "/*\n * 16-bit kernel initialization code\n *\n * Copyright 2000 Alexandre Julliard\n *\n * This library is free software; you"
  },
  {
    "path": "krnl386/kernel16_private.h",
    "chars": 43692,
    "preview": "/*\n * Kernel 16-bit private definitions\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you"
  },
  {
    "path": "krnl386/krnl386.def",
    "chars": 6018,
    "preview": "; File generated automatically from krnl386.exe16.spec; do not edit!\n\nLIBRARY krnl386.exe16\n\nEXPORTS\n  _wine_spec_dos_he"
  },
  {
    "path": "krnl386/krnl386.exe16.spec",
    "chars": 40006,
    "preview": "# 1-207 are the basic functions, those are (with minor variations)\n# present in win31, win95 and nt351\n\n1   stub FatalEx"
  },
  {
    "path": "krnl386/krnl386.vcxproj",
    "chars": 9045,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "krnl386/krnl386.vcxproj.filters",
    "chars": 5267,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "krnl386/local.c",
    "chars": 69034,
    "preview": "/*\n * 16-bit local heap functions\n *\n * Copyright 1995 Alexandre Julliard\n * Copyright 1996 Huw Davies\n * Copyright 1998"
  },
  {
    "path": "krnl386/ne_module.c",
    "chars": 79930,
    "preview": "/*\n * NE modules\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you can redistribute it an"
  },
  {
    "path": "krnl386/ne_segment.c",
    "chars": 37108,
    "preview": "/*\n * NE segment loading\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Alexandre Julliard\n *\n * This library "
  },
  {
    "path": "krnl386/registry.c",
    "chars": 13225,
    "preview": "/*\n * 16-bit registry functions\n *\n * Copyright 1996 Marcus Meissner\n * Copyright 1998 Matthew Becker\n * Copyright 1999 "
  },
  {
    "path": "krnl386/relay.c",
    "chars": 30728,
    "preview": "/*\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1995 Alexandre Julliard\n * Copyright 2002 Jukka Heinonen\n *\n * This "
  },
  {
    "path": "krnl386/resource.c",
    "chars": 42497,
    "preview": "/*\n * 16-bit resource functions\n *\n * Copyright 1993 Robert J. Amstadt\n * Copyright 1997 Alex Korobka\n * Copyright 1998 "
  },
  {
    "path": "krnl386/selector.c",
    "chars": 24476,
    "preview": "/*\n * Selector manipulation functions\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you c"
  },
  {
    "path": "krnl386/snoop.c",
    "chars": 10257,
    "preview": "/*\n * 386-specific Win16 dll<->dll snooping functions\n *\n * Copyright 1998 Marcus Meissner\n *\n * This library is free so"
  },
  {
    "path": "krnl386/soundblaster.c",
    "chars": 12118,
    "preview": "/*\n * Soundblaster Emulation\n *\n * Copyright 2002 Christian Costa\n *\n * This library is free software; you can redistrib"
  },
  {
    "path": "krnl386/stub.c",
    "chars": 5597,
    "preview": "#include \"kernel16_private.h\"\n\n#include \"config.h\"\n#include \"wine/port.h\"\n\n#include <stdarg.h>\n\n#include \"windef.h\"\n#inc"
  },
  {
    "path": "krnl386/syslevel.c",
    "chars": 8294,
    "preview": "/*\n * Win32 'syslevel' routines\n *\n * Copyright 1998 Ulrich Weigand\n *\n * This library is free software; you can redistr"
  },
  {
    "path": "krnl386/task.c",
    "chars": 63727,
    "preview": "/*\n * Task functions\n *\n * Copyright 1995 Alexandre Julliard\n *\n * This library is free software; you can redistribute i"
  },
  {
    "path": "krnl386/thunk.c",
    "chars": 83510,
    "preview": "/*\n * KERNEL32 thunks and other undocumented stuff\n *\n * Copyright 1996, 1997 Alexandre Julliard\n * Copyright 1997, 1998"
  },
  {
    "path": "krnl386/timer.c",
    "chars": 5610,
    "preview": "/*\n * 8253/8254 Programmable Interval Timer (PIT) emulation\n *\n * Copyright 2003 Jukka Heinonen\n *\n * This library is fr"
  },
  {
    "path": "krnl386/utthunk.c",
    "chars": 8358,
    "preview": "/*\n * Win32s Universal Thunk API\n *\n * Copyright 1999 Ulrich Weigand\n *\n * This library is free software; you can redist"
  },
  {
    "path": "krnl386/vdd.c",
    "chars": 12514,
    "preview": "#include <windows.h>\n#include \"kernel16_private.h\"\n#include \"dosexe.h\"\n#include \"windows/wownt32.h\"\n\ntypedef struct\n{\n  "
  },
  {
    "path": "krnl386/version.rc",
    "chars": 975,
    "preview": "/*\n * Copyright 2001 Dmitry Timoshkov\n *\n * This library is free software; you can redistribute it and/or\n * modify it u"
  },
  {
    "path": "krnl386/vga.c",
    "chars": 72914,
    "preview": "/*\n * VGA hardware emulation\n *\n * Copyright 1998 Ove Kåven (with some help from Marcus Meissner)\n *\n * This library is "
  },
  {
    "path": "krnl386/vga.h",
    "chars": 3768,
    "preview": "/*\n * VGA emulation\n *\n * Copyright 1998 Ove Kåven\n *\n * This library is free software; you can redistribute it and/or\n "
  },
  {
    "path": "krnl386/vxd.c",
    "chars": 60291,
    "preview": "/*\n * Win32 VxD functions\n *\n * Copyright 1998 Marcus Meissner\n * Copyright 1998 Ulrich Weigand\n * Copyright 1998 Patrik"
  },
  {
    "path": "krnl386/wow_handle.c",
    "chars": 13290,
    "preview": "/*\nhandle16 <-> wow64 handle32\n*/\n\n#include \"config.h\"\n#include \"wine/port.h\"\n\n#include <assert.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "krnl386/wowthunk.c",
    "chars": 24875,
    "preview": "/*\n * Win32 WOW Generic Thunk API\n *\n * Copyright 1999 Ulrich Weigand\n *\n * This library is free software; you can redis"
  },
  {
    "path": "lzexpand/CMakeLists.txt",
    "chars": 485,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(lzexpand SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/lzexpand.def lzexpand"
  },
  {
    "path": "lzexpand/lzexpand.c",
    "chars": 4573,
    "preview": "/*\n * LZ Decompression functions\n *\n * Copyright 1996 Marcus Meissner\n *\n * This library is free software; you can redis"
  },
  {
    "path": "lzexpand/lzexpand.def",
    "chars": 135,
    "preview": "; File generated automatically from lzexpand.dll16.spec; do not edit!\n\nLIBRARY lzexpand.dll16\n\nEXPORTS\n  _wine_spec_dos_"
  },
  {
    "path": "lzexpand/lzexpand.dll16.spec",
    "chars": 473,
    "preview": "1  pascal   LZCopy(word word) LZCopy16\n2  pascal -ret16 LZOpenFile(str ptr word) LZOpenFile16\n3  pascal -ret16 LZInit(wo"
  },
  {
    "path": "lzexpand/lzexpand.vcxproj",
    "chars": 9306,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "lzexpand/lzexpand.vcxproj.filters",
    "chars": 1362,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "lzexpand/wine_lzexpand.c",
    "chars": 15224,
    "preview": "/*\n * LZ Decompression functions\n *\n * Copyright 1996 Marcus Meissner\n *\n * This library is free software; you can redis"
  },
  {
    "path": "mmsystem/CMakeLists.txt",
    "chars": 495,
    "preview": "file(GLOB SOURCE *.c *.cpp *.rc)\nadd_library(mmsystem SHARED ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/mmsystem.def mmsystem"
  },
  {
    "path": "mmsystem/Makefile.in",
    "chars": 176,
    "preview": "MODULE    = mmsystem.dll16\nIMPORTS   = winmm user32\n\nEXTRADLLFLAGS = -m16 -Wb,--main-module,winmm.dll\n\nC_SRCS = \\\n\tdrive"
  },
  {
    "path": "mmsystem/driver.c",
    "chars": 11582,
    "preview": "/*\n * WINE Drivers functions\n *\n * Copyright 1994 Martin Ayotte\n * Copyright 1998 Marcus Meissner\n * Copyright 1999,2000"
  },
  {
    "path": "mmsystem/mci16.c",
    "chars": 39423,
    "preview": "/*\n * MMSYSTEM functions\n *\n * Copyright 1993      Martin Ayotte\n *           1998-2003,2009 Eric Pouech\n *\n * This libr"
  },
  {
    "path": "mmsystem/message16.c",
    "chars": 37666,
    "preview": "/*\n * MMSYSTEM MCI and low level mapping functions\n *\n * Copyright 1999 Eric Pouech\n *\n * This library is free software;"
  },
  {
    "path": "mmsystem/mmio16.c",
    "chars": 24536,
    "preview": "/*\n * MMSYSTEM mmio* functions\n *\n * Copyright 1993               Martin Ayotte\n *           1998-2003,2009     Eric Pou"
  },
  {
    "path": "mmsystem/mmsystem.c",
    "chars": 70463,
    "preview": "/* -*- tab-width: 8; c-basic-offset: 4 -*- */\n\n/*\n * MMSYSTEM functions\n *\n * Copyright 1993      Martin Ayotte\n *      "
  },
  {
    "path": "mmsystem/mmsystem.def",
    "chars": 178,
    "preview": "; File generated automatically from ..\\mmsystem\\mmsystem.dll16.spec; do not edit!\n\nLIBRARY mmsystem.dll16\n\nEXPORTS\n  _wi"
  },
  {
    "path": "mmsystem/mmsystem.dll16.spec",
    "chars": 10304,
    "preview": "1      pascal  WEP(word word word ptr) MMSYSTEM_WEP\n2      pascal  sndPlaySound(ptr word) sndPlaySound16\n3      pascal  "
  }
]

// ... and 1107 more files (download for full content)

About this extraction

This page contains the full source code of the otya128/winevdm GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1307 files (21.0 MB), approximately 5.6M tokens, and a symbol index with 17786 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!