-------------------------------------------------------------------------------- EliCZ's Device Driver Development Kit "Become part of Windows core!" Edition: Preliminary -------------------------------------------------------------------------------- What is it? ----------- EDK should help you in developing ExDs. ExD is EliCZ's Device Driver, an executable containing 32bit FLAT code and data, running at ring-0 of Microsoft Windows 95 or Microsoft Windows 98. Running at ring-0 means that everything is allowed. VxD services (VCALLs) can be used too! ExD is typically a short program, written in assembly language, which usually provides some system low-level functions. Advantages (vs. loadable VxD) ----------------------------- Smaller file size, very easy to make - "write and run", autoloading, not detectable, invisible for system. Disadvantages ------------- Not detectable, invisible for system, illegal(=not supported by OS), not defined communication between ring-3 and ring-0 (something like DeviceIoControl). That's why you should use it for your experiments only. -------------------------------------------------------------------------------- Tools ----- Assembler: Includes and examples are designed for Borland Turbo Assembler v4.0 and higher. I use TASM 4.1 because 5.0 crashes when translates BSF or BSR instruction and SEG?S directives. Linkers: DOS -It's needed only for linking ExDLdr and Nonresident ExDs. Use your favourite linker. I recommend Borland Turbo Linker (tlink.exe) or old Symantec Linker (link386.exe, will be maybe available on http://members. xoom.com/Zenix). FLAT -Use DLINK v2.00 beta, 32bit OMF linker for DOS32 dos-extender (c) by Adam Seychell. (On file offset 7A50 replace AA with 00 to produce "registered" image). NonResident ExDs ---------------- Nonresident ExD is simplier variant. Nothing special is required. Those ExDs are mostly compatible with Microsoft Windows 3.x (it depends on used VCALLs). Tools required: assembler, DOSlinker Template: in NonResid folder Make: 1) In Template place VCALLs you need 2) Assemble and DOSLink it Resident ExDs ------------- Those ExDs are not compatible with Microsoft Windows 3.x. Tools required: assembler, DOSlinker, FLATlinker Template: in Resident folder Make: Write YourExD Assemble YourExD DLINK -SExDLdr YourExD -------------------------------------------------------------------------------- Information about VCALLs, structures, constants, .. --------------------------------------------------- Microsoft Developer Network Library contains information about VCALLs and few structures, but doesn't contain any hex value (only names of constants). Calling conventions of VCALLs and their parameters are sometimes similar as for Win32 API (e.g. Registry VCALLs) so you can use values of constants, number of parameters from C++ include files. Function can be sometimes a bit different (e.g. core _lmemcpy is forward only , kernel32 _lmemcpy is "bidirectional"). You need WinICE to trace VCALLs to see values of constants and what they really do. (command examples: VCALL VDD*, u Simulate_IO, bpx _HeapFree, etc..) Obtaining VCALL numbers: I've prepared VCALL.inc (You can find them in Interrupt List too.) -------------------------------------------------------------------------------- Reference --------- DLINK (Adam Seychell, dos32b35.zip, everywhere on Internet - use FTP Search) MSDN (Microsoft, on CD or online at http://www.microsoft.com/msdn/) DOSVxD (EliCZ, filter#5, http://www.suddendischarge.com) VxD Monitor (Cogswell & Russinowich, vxdmon.zip, ?) - VCALLs hooking! VxD Viewer (Vireo Software, vxdview.zip, http://www.vireo.com) Monitor (Vireo Software, monitor.zip, http://www.vireo.com) - it hears DOSVxD Perspective ----------- 1 year left, then .SYSs will rule. Look for DDK for NT. To make EDK for NT is impossible. --------------------------------------------------------------------------------