• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
Drugwash

KernelEx -- On building, debugging and related matters...

152 posts in this topic

I can compile it successfully and test it (otherwise I wouldn't even improve KernelEx lol).

As COMPILE.TXT says, you will need Microsoft Visual C++ 6.0 SP6 to compile.

Hi there, nice to see the project's been picked up!

However, I pulled the zip from your Github repo, tried to compile minutes ago and it won't go all the way. First, the kexbaseN and kexbaseS projects needed a minor path change to retrieve prep.exe from the newly-added folder output-i386. Then, the order the projects are being compiled is not correct, auxiliary will fail because KernelEx.lib is not present, which means dependencies are not correctly set. Finally, the vxd project bails out because of the new vkd.h include that wasn't there in Xeno's original project and is nowhere to be found in VC6, PSDK or 98DDK includes.

I extracted MYVKD.H from the Win2k SDK and put in in 98DDK's include folder, but that's not the right thing to do since others may not have/want to use the W2K DDK and even with that header added, the vxd project still throws linker errors. Got no problems whatsoever compiling Xeno's original project, so I doubt it would be my IDE's fault.

vxdmain.obj : error LNK2005: "void __stdcall ReplaceLine(int,char *)" (?ReplaceLine@@YGXHPAD@Z) already defined in patch_ifsmgr.obj
vxdmain.obj : error LNK2005: "int __stdcall DisplayString(char *)" (?DisplayString@@YGHPAD@Z) already defined in patch_ifsmgr.obj
vxdmain.obj : error LNK2005: "int CurrentLine" (?CurrentLine@@3HA) already defined in patch_ifsmgr.obj
vxdmain.obj : warning LNK4006: "void __stdcall ReplaceLine(int,char *)" (?ReplaceLine@@YGXHPAD@Z) already defined in patch_ifsmgr.obj; second definition ignored
vxdmain.obj : warning LNK4006: "int __stdcall DisplayString(char *)" (?DisplayString@@YGHPAD@Z) already defined in patch_ifsmgr.obj; second definition ignored
vxdmain.obj : warning LNK4006: "int CurrentLine" (?CurrentLine@@3HA) already defined in patch_ifsmgr.obj; second definition ignored
../output-i386/Release/VKrnlEx.vxd : fatal error LNK1169: one or more multiply defined symbols found

It's understandable that this is a work in progress and errors are inherent. Is there any estimation of the moment when the repository will became stable, that is capable of being compiled? Thank you.

0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

- Core depends on kexcrt so it will not compile unless kexcrt is compiled first.

- Paths still not fixed in kexbaseN and kexbaseS. prep.exe is being placed in $(WkspDir)\output-i386\Release, while both projects check for an if condition in $(WkspDir)\util\prep\Release and next launch it from the same location, so there's two places to modify for each configuration (Debug and Release), in each project: replace util\prep with output-i386. Also, KernelEx.lib not found in path ../../common, since it's being created in ../../core/Release or ../../core/Debug. Changing the former path in both configurations for both projects fixed it.

- Auxiliary fails due to winsta psapi and wtsapi32 makefiles also looking for KernelEx.lib in ../../common.

I always did a batch build, it used to work in Xeno's version, only that kexcontrol had to be executed separately, after Core (Debug) and sdbcreate must be disabled since it won't execute under Win9x (I use 98SE).

I think the proper order should be (at least for the Release configuration - haven't tried to build Debug):

kexcrt

prep

Core (Debug)

kexcontrol

Core (APIHOOK)

Core (Release)

and then all the others.

EDIT:

The NSIS installer will fail if the Setup folder doesn't exist in output-i386. It should be checked for and created before the executable is built.

Edited by Drugwash
0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

I always redownloaded after you made a change, it goes without saying. Also, I either performed Cleaning or deployed it in a separate folder.

Latest changes are close to, but not perfect - auxiliary, kexbaseN and kexbaseS still not compiling because of bad path to KernelEx.lib (../../common), which - as I said before - resides in ../../core/Release and ../../core/Debug, respectively. You'll also find an 'Invalid directory' message for the Core projects.

I'll be back much later, got some things to attend to, right now. In the mean time, here's the log for a full batch compile:

--------------------Configuration: kexcrt - Win32 Release--------------------
Compiling...
_vsnprintf.c
abort.c
argcargv.c
assert.c
atoi.c
atol.c
atoll.c
concrt0.c
ctypes.c
dllcrt0.c
exit.c
init.c
isalnum.c
isalpha.c
isascii.c
isblank.c
iscntrl.c
isdigit.c
isgraph.c
islower.c
Generating Code...
Compiling...
isprint.c
ispunct.c
isspace.c
isupper.c
isxdigit.c
memccpy.c
memchr.c
memcmp.c
memcpy.c
memmem.c
memmove.c
Generating Code...
Compiling...
memory-cpp.cpp
Generating Code...
Compiling...
memory.c
memrchr.c
memset.c
memswap.c
printf.c
purecall.c
snprintf.c
sprintf.c
sscanf.c
strcat.c
strchr.c
strcmp.c
strcmpi.c
strcpy.c
strdup.c
strlen.c
strncat.c
strncmp.c
strncpy.c
strnicmp.c
Generating Code...
Compiling...
strnlen.c
strntoimax.c
strntoumax.c
strpbrk.c
strrchr.c
strsep.c
strstr.c
strtok.c
strtok_r.c
strtol.c
strtoll.c
strtoul.c
strtoull.c
strtoumax.c
strupr.c
strxspn.c
tolower.c
toupper.c
vsnprintf.c
vsprintf.c
Generating Code...
Compiling...
vsscanf.c
wincrt0.c
write.c
Generating Code...
Creating library...

kexcrt.lib - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Release--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Release/KernelEx.lib and object Release/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Debug--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
debug.cpp
debugproto.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Debug/KernelEx.lib and object Debug/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Release APIHOOK--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Release_APIHOOK\k32ord.lib and object .\Release_APIHOOK\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Release_APIHOOK/KernelEx.lib and object Release_APIHOOK/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: prep - Win32 Release--------------------
Compiling...
prep.cpp
Linking...

prep.exe - 0 error(s), 0 warning(s)
--------------------Configuration: prep - Win32 Debug--------------------
Compiling...
prep.cpp
Linking...

prep.exe - 0 error(s), 0 warning(s)
--------------------Configuration: KernelEx Base NonShared - Win32 Release--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'rpcrt4\'
Directory is up to date
Processing directory: 'winspool\'
Directory is up to date
Processing directory: 'shfolder\'
Directory is up to date
Processing directory: 'winmm\'
Directory is up to date
Processing directory: 'ws2_32\'
Directory is up to date
Processing directory: 'ole32\'
Directory is up to date
Processing directory: 'cryptui\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbasen.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
allocator.c
D:\free\KernelEx-master3\apilibs\kexbasen\kernel32\jemalloc/jemalloc.c(239) : warning C4163: '_BitScanForward' : not available as an intrinsic function
DelayLoadFailureHook.c
ThreadPool.c
TlsExt.c
unikernel32.c
_user32_apilist.c
uniuser32.c
_gdi32_apilist.c
ScriptCache.cpp
UberGDI.c
unigdi32.c
_advapi32_apilist.c
uniadvapi32.c
_comdlg32_apilist.c
openfilename_fix.c
opensavefile.c
unicomdlg32.c
_shell32_apilist.c
SHBindToParent.c
SHCreateDirectoryEx.c
SHGetFolderLocation.c
SHGetFolderPath.c
SHGetSpecialFolder.c
SHParseDisplayName.c
unishell32.c
_rpcrt4_apilist.c
NdrDllGetClassObject.c
unirpcrt4.c
_winspool_apilist.c
_winspool_stubs.c
DefaultPrinter.c
uniwinspool.c
_shfolder_apilist.c
shfolder.c
_winmm_apilist.c
uniwinmm.c
_ws2_32_apilist.c
addinfo.c
select_fix.c
_ole32_apilist.c
CoWaitForMultipleHandles.c
_cryptui_apilist.c
CryptUIDlgViewContext.c
_ntdll_apilist.c
_ntdll_stubs.c
common.c
main.c
shlord.c
unifwd.c
Linking...
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
Error executing link.exe.

kexbasen.dll - 1 error(s), 1 warning(s)
--------------------Configuration: KernelEx Base NonShared - Win32 Debug--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'rpcrt4\'
Directory is up to date
Processing directory: 'winspool\'
Directory is up to date
Processing directory: 'shfolder\'
Directory is up to date
Processing directory: 'winmm\'
Directory is up to date
Processing directory: 'ws2_32\'
Directory is up to date
Processing directory: 'ole32\'
Directory is up to date
Processing directory: 'cryptui\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbasen.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
allocator.c
D:\free\KernelEx-master3\apilibs\kexbasen\kernel32\jemalloc/jemalloc.c(239) : warning C4163: '_BitScanForward' : not available as an intrinsic function
DelayLoadFailureHook.c
ThreadPool.c
TlsExt.c
unikernel32.c
_user32_apilist.c
uniuser32.c
_gdi32_apilist.c
ScriptCache.cpp
UberGDI.c
unigdi32.c
_advapi32_apilist.c
uniadvapi32.c
_comdlg32_apilist.c
openfilename_fix.c
opensavefile.c
unicomdlg32.c
_shell32_apilist.c
SHBindToParent.c
SHCreateDirectoryEx.c
SHGetFolderLocation.c
SHGetFolderPath.c
SHGetSpecialFolder.c
SHParseDisplayName.c
unishell32.c
_rpcrt4_apilist.c
NdrDllGetClassObject.c
unirpcrt4.c
_winspool_apilist.c
_winspool_stubs.c
DefaultPrinter.c
uniwinspool.c
_shfolder_apilist.c
shfolder.c
_winmm_apilist.c
uniwinmm.c
_ws2_32_apilist.c
addinfo.c
select_fix.c
_ole32_apilist.c
CoWaitForMultipleHandles.c
_cryptui_apilist.c
CryptUIDlgViewContext.c
_ntdll_apilist.c
_ntdll_stubs.c
common.c
main.c
shlord.c
unifwd.c
Linking...
LINK : fatal error LNK1104: cannot open file "../../common/KernelEx.lib"
Error executing link.exe.

kexbasen.dll - 1 error(s), 1 warning(s)
--------------------Configuration: KernelEx Base Shared - Win32 Release--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'version\'
Directory is up to date
Processing directory: 'comctl32\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbases.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
_kernel32_stubs.c
console.c
critsect.c
directory.c
file.c
inter.c
IsProcessorFeaturePresent.c
jobs.c
KEXVersion.c
locale.c
locale_casemap.c
locale_collation.c
locale_fold.c
locale_sortkey.c
locale_wctype.c
mem.c
module.c
pointer.c
port.c
process.c
RtlCaptureContext.c
session.c
thread.c
time.c
uilang.c
unikernel32.c
version.c
volume.c
widecharconv.c
_user32_apilist.c
_user32_stubs.c
desktop.c
dialog.c
display.c
exit.c
GetMouseMovePointsEx.c
input.c
LockWorkStation.c
lstr.c
menu.c
message.c
SystemParametersInfo_fix.c
thuni_conv.c
thuni_layer.c
thuni_proc.c
thuni_stuff.c
thuni_thunk.c
uniuser32.c
window.c
winsta.c
_gdi32_apilist.c
_gdi32_stubs.c
EnumFont.c
FontResourceEx.c
GdiObjects.c
GetGlyphOutlineA_fix.c
GetTextExtentPoint32_fix.c
MaskBlt.c
Orhpans.cpp
TextOut.c
unigdi32.c
_advapi32_apilist.c
_advapi32_stubs.c
lsa.c
OpenSCManager_stub.c
reg.c
RtlGenRandom.c
security.c
TraceMessage.c
uniadvapi32.c
_comdlg32_apilist.c
PrintDlgEx.c
_version_apilist.c
universion.c
_shell32_apilist.c
_shell32_stubs.c
CommandLineToArgvW.c
IsUserAnAdmin.c
shexec.c
shexit.c
shmain.c
_comctl32_apilist.c
newclassreg.c
syslink.c
_ntdll_apilist.c
_ntdll_stubs.c
error.c
handle.c
ldr.c
ntfile.c
ntmem.c
ntprocess.c
ntthread.c
rtl.c
sys.c
token.c
common.c
main.c
Linking...
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
Error executing link.exe.

kexbases.dll - 1 error(s), 0 warning(s)
--------------------Configuration: KernelEx Base Shared - Win32 Debug--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'version\'
Directory is up to date
Processing directory: 'comctl32\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbases.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
_kernel32_stubs.c
console.c
critsect.c
directory.c
file.c
inter.c
IsProcessorFeaturePresent.c
jobs.c
KEXVersion.c
locale.c
locale_casemap.c
locale_collation.c
locale_fold.c
locale_sortkey.c
locale_wctype.c
mem.c
module.c
pointer.c
port.c
process.c
RtlCaptureContext.c
session.c
thread.c
time.c
uilang.c
unikernel32.c
version.c
volume.c
widecharconv.c
_user32_apilist.c
_user32_stubs.c
desktop.c
dialog.c
display.c
exit.c
GetMouseMovePointsEx.c
input.c
LockWorkStation.c
lstr.c
menu.c
message.c
SystemParametersInfo_fix.c
thuni_conv.c
thuni_layer.c
thuni_proc.c
thuni_stuff.c
thuni_thunk.c
uniuser32.c
window.c
winsta.c
_gdi32_apilist.c
_gdi32_stubs.c
EnumFont.c
FontResourceEx.c
GdiObjects.c
GetGlyphOutlineA_fix.c
GetTextExtentPoint32_fix.c
MaskBlt.c
Orhpans.cpp
TextOut.c
unigdi32.c
_advapi32_apilist.c
_advapi32_stubs.c
lsa.c
OpenSCManager_stub.c
reg.c
RtlGenRandom.c
security.c
TraceMessage.c
uniadvapi32.c
_comdlg32_apilist.c
PrintDlgEx.c
_version_apilist.c
universion.c
_shell32_apilist.c
_shell32_stubs.c
CommandLineToArgvW.c
IsUserAnAdmin.c
shexec.c
shexit.c
shmain.c
_comctl32_apilist.c
newclassreg.c
syslink.c
_ntdll_apilist.c
_ntdll_stubs.c
error.c
handle.c
ldr.c
ntfile.c
ntmem.c
ntprocess.c
ntthread.c
rtl.c
sys.c
token.c
common.c
main.c
Linking...
LINK : fatal error LNK1104: cannot open file "../../common/KernelEx.lib"
Error executing link.exe.

kexbases.dll - 1 error(s), 0 warning(s)
--------------------Configuration: VxD - Win32 Release--------------------
Compiling...
patch.cpp
patch_ifsmgr.cpp
patch_kernel32.cpp
pemanip.cpp
Generating Code...
Compiling...
util.c
Generating Code...
Compiling...
vxdmain.cpp
Generating Code...
Linking...

VKrnlEx.vxd - 0 error(s), 0 warning(s)
--------------------Configuration: VxD - Win32 Debug--------------------
Compiling...
debug.cpp
patch.cpp
patch_ifsmgr.cpp
patch_kernel32.cpp
pemanip.cpp
Generating Code...
Compiling...
util.c
Generating Code...
Compiling...
vxdmain.cpp
Generating Code...
Linking...

VKrnlEx.vxd - 0 error(s), 0 warning(s)
--------------------Configuration: auxiliary - Win32 Release--------------------
cd msimg32
cl /nologo /W3 /O2 /Oi /FD /c /Fomsimg32.obj msimg32.c
msimg32.c
rc /r msimgme
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:msimg32.def /OUT:..\..\output-i386\Release\msimg32.dll -nodefaultlib kernel32.lib gdi32.lib ../../kexcrt/kexcrt.lib msimg32.obj msimgme.res
Creating library ..\..\output-i386\Release\msimg32.lib and object ..\..\output-i386\Release\msimg32.exp
cd ..
cd pdh
link /LIB /NOLOGO /MACHINE:IX86 /DEF:kord.def /OUT:kord.lib
Creating library kord.lib and object kord.exp
cl /nologo /W3 /O2 /Oi /FD /c /Fopdh.obj pdh.c
pdh.c
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:pdh.def /OUT:..\..\output-i386\Release\pdh.dll -nodefaultlib kernel32.lib gdi32.lib kord.lib pdh.obj
Creating library ..\..\output-i386\Release\pdh.lib and object ..\..\output-i386\Release\pdh.exp
cd ..
cd winsta
cl /nologo /W3 /O2 /Oi /FD /c /Fowinsta.obj winsta.c
winsta.c
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:winsta.def /OUT:..\..\output-i386\Release\winsta.dll -nodefaultlib kernel32.lib gdi32.lib user32.lib ../../kexcrt/kexcrt.lib ../../common/KernelEx.lib winsta.obj
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\VC98\BIN\link.exe"' : return code '0x49d'
Stop.
NMAKE : fatal error U1077: '"C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BIN\NMAKE.exe"' : return code '0x2'
Stop.
Error executing nmake.

auxiliary - 3 error(s), 0 warning(s)
--------------------Configuration: kexCOM - Win32 Release--------------------
Compiling...
factory.cpp
server.cpp
shelllink.cpp
Linking...
Creating library Release/kexCOM.lib and object Release/kexCOM.exp

kexCOM.dll - 0 error(s), 0 warning(s)
--------------------Configuration: kexCOM - Win32 Debug--------------------
Compiling...
factory.cpp
server.cpp
shelllink.cpp
Linking...
Creating library Debug/kexCOM.lib and object Debug/kexCOM.exp

kexCOM.dll - 0 error(s), 0 warning(s)
--------------------Configuration: kexcontrol - Win32 Release--------------------
Compiling...
kexcontrol.cpp
Linking...

kexcontrol.exe - 0 error(s), 0 warning(s)
--------------------Configuration: kexcontrol - Win32 Debug--------------------
Compiling...
kexcontrol.cpp
Linking...

kexcontrol.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sdbcreate - Win32 Release--------------------
Performing Custom Build Step on .\sdbapi.h
sdbapi.h
Creating library .\Release\sdbapi.lib and object .\Release\sdbapi.exp
Compiling...
sdbcreate.cpp
Linking...

sdbcreate.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sdbcreate - Win32 Debug--------------------
Performing Custom Build Step on .\sdbapi.h
sdbapi.h
Creating library .\Debug\sdbapi.lib and object .\Debug\sdbapi.exp
Compiling...
sdbcreate.cpp
Linking...

sdbcreate.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sheet - Win32 Release--------------------
Compiling resources...
Compiling...
factory.cpp
KexLinkage.cpp
server.cpp
sheet.cpp
Linking...
Creating library Release/sheet.lib and object Release/sheet.exp

sheet.dll - 0 error(s), 0 warning(s)
--------------------Configuration: sheet - Win32 Debug--------------------
Compiling resources...
Compiling...
factory.cpp
KexLinkage.cpp
server.cpp
sheet.cpp
Linking...
Creating library Debug/sheet.lib and object Debug/sheet.exp

sheet.dll - 0 error(s), 0 warning(s)
--------------------Configuration: verify - Win32 Release--------------------
Compiling resources...
Compiling...
main.c
Linking...

verify.exe - 0 error(s), 0 warning(s)
--------------------Configuration: verify - Win32 Debug--------------------
Compiling resources...
Compiling...
main.c
Linking...

verify.exe - 0 error(s), 0 warning(s)

EDIT:

I've fixed some of the projects and makefiles, it all compiles fine now as a full batch. Here's the modded files: download

EDIT 2:

I've installed the package created after compilation, on a test machine (real hardware, 98SE + unofficial SP3) - upon reboot, the boot sequence hangs while Enumerating Plug and Play Software Device Enumerator, right after it finished Enumerating TapeDetection. I managed to uninstall it and then installed the package built from Xeno's last code at Sourceforge - no problems whatsoever after reboot.

Machine is an AMD Duron 800MHz with 448MB RAM, SiS630/730 chipset.

Edited by Drugwash
0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

Actually you only need wdeb386.exe and no other files for debug output. Physical machine is also okay. You only gotta connect two machines with serial cable.

Also I suggest moving this discussion to a separate thread...

0

Share this post


Link to post
Share on other sites
Also I suggest moving this discussion to a separate thread...

Done. If you think some previous post fits better here, please let me know. @Drugwash: congrats, you became thread starter! :)

Cheers to you all!

0

Share this post


Link to post
Share on other sites

@dencorso: Wow, I feel important now! :P However, for some reason, when splitting posts from other thread, the mail notifications stop coming. I had not received a notification for Leyok's post #6 from March 1 at 3:36PM and if it wasn't for Xeno's reply #7 from March 2 at 11:29 PM (got notification for that), I wouldn't have known the topic has been split. There was no notification for your 1:55AM reply #8 either. Could you please check the notification system (I always set notifications to 'instant')? Thank you.

@Xeno86: Sorry about the off-topic in the original topic, it's OK now. And thanks for everything! :thumbup

I might have a serial cable I've used a couple years ago in a project of mine, but I'm not at all familiar with such configuration :blushing: and it might not even be long enough to connect both machines (can't move them around, there's a whole mess in my room).

@Leyok: Could there be an option to print debug to file, as a choice? Thing is, I can't set up a virtual machine and am not familiar with that kind of configuration either. Besides, for the issue at hand, I can access all partitions of the test machine through local network from my main 98SE machine, even when it's stuck at boot time - apparently, the network drivers are already loaded by the time it hangs. Therefore I can open and read a log file, which would be much easier for me. I found out exactly where it hangs by comparing the two versions of bootlog.txt: the one created with KEx 4.5.3 beta and the one created with original KEx 4.5.2.

Any other alternative ideas?

Edited by Drugwash
0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

That would be great, thank you!

And it just occured to me that you might create a second NSIS installer script for a debug package, so that the original Release package would behave normally (being built from the Release branch) while the Debug package (built from the Debug branch) would be the one that creates log and/or sends over pipe.

0

Share this post


Link to post
Share on other sites

You can already create debug installer package with the following command-line:

"c:\Program Files\NSIS\makensis.exe" /D_DEBUG KernelEx.nsi

As for debugging, put wdeb386.exe from 98ddk\bin under C:\WINDOWS and execute this command-line:

wdeb386.exe /n /c:1 /r:19200 win.com

On second computer run a serial port terminal - hyperterminal / putty / whatever.

0

Share this post


Link to post
Share on other sites

Thanks for the tip, Xeno. Apparently, _DEBUG is already defined in the .nsi script I got here, so running that command line results in an error.

Good thing is, while the command line wouldn't run from within Total Commander, I just modified the Registry, adding a context menu item for building with the Debug switch on, so now it's a breeze choosing Release or Debug with a simple right-click on the .nsi script. :)

But the _DEBUG switch should be removed from the .nsi script, so that building in Release mode would work correctly.

REGEDIT4

[HKEY_CLASSES_ROOT\NSIS.Script\shell\compile-debug]
@="Compile NSIS Script (Debug)"

[HKEY_CLASSES_ROOT\NSIS.Script\shell\compile-debug\command]
@="\"C:\\Program Files\\NSIS\\makensisw.exe\" /D_DEBUG \"%1\""

@Leyok: have you ever tried to build the whole project in batch mode on a 9x machine? I see you keep using the Post-build 'copy' command in the Core project, but here on my machine, the KernelEx.lib file is never copied to the destination folder, making kexbasen, kexbases and auxiliary projects fail at link time, not finding ../../common/KernelEx.lib.

Moreover, I may be wrong but in my logic, the Debug versions of kexbasen and kexbases should use the Debug version of the KernelEx.lib library, whereas currently, the way the batch order is and considering the copying of the KernelEx.lib library, they would always build through the library create by the APILIB version of the core (if the file would be succesfully copied to the destination folder, that is). I'm not sure of the implications, if any - just saying.

Have you tried using the modified project files I linked to somewhere above? They worked perfectly here. I'll be back a little later, after I manage to build, install and test the new version.

0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

No, it doesn't work for me. :( BTW, you forgot to change the path in the APILIB configuration, which is the latest being built and precisely the one that's being used by all other projects atfterwards. Reason why I insist on leaving the KernelEx.lib versions where they are and just modify the paths in the other projects (kexbasen, kexbases and auxiliary) such that they always use the proper version of KernelEx.lib, whether the projects are compiled in Release, Debug or full batch mode. That solution worked for me everytime, after every commit. I do not know why exactly the copy operation does not work, but since it's not even necessary (at this point), we shouldn't bother with this and just settle on a configuration that works, primarily in 9x and I'm certain it would work in XP/Vista/7 too.

Has anyone tried the modified projects from here? Do they work for you as they do for me?

Here's some debug logs:

Here's the compile log:

--------------------Configuration: kexcrt - Win32 Release--------------------
Compiling...
_vsnprintf.c
abort.c
argcargv.c
assert.c
atoi.c
atol.c
atoll.c
concrt0.c
ctypes.c
dllcrt0.c
exit.c
init.c
isalnum.c
isalpha.c
isascii.c
isblank.c
iscntrl.c
isdigit.c
isgraph.c
islower.c
Generating Code...
Compiling...
isprint.c
ispunct.c
isspace.c
isupper.c
isxdigit.c
memccpy.c
memchr.c
memcmp.c
memcpy.c
memmem.c
memmove.c
Generating Code...
Compiling...
memory-cpp.cpp
Generating Code...
Compiling...
memory.c
memrchr.c
memset.c
memswap.c
printf.c
purecall.c
snprintf.c
sprintf.c
sscanf.c
strcat.c
strchr.c
strcmp.c
strcmpi.c
strcpy.c
strdup.c
strlen.c
strncat.c
strncmp.c
strncpy.c
strnicmp.c
Generating Code...
Compiling...
strnlen.c
strntoimax.c
strntoumax.c
strpbrk.c
strrchr.c
strsep.c
strstr.c
strtok.c
strtok_r.c
strtol.c
strtoll.c
strtoul.c
strtoull.c
strtoumax.c
strupr.c
strxspn.c
tolower.c
toupper.c
vsnprintf.c
vsprintf.c
Generating Code...
Compiling...
vsscanf.c
wincrt0.c
write.c
Generating Code...
Creating library...

kexcrt.lib - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Release--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Release/KernelEx.lib and object Release/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Debug--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
debug.cpp
debugproto.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Debug/KernelEx.lib and object Debug/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: Core - Win32 Release APIHOOK--------------------
Performing Custom Build Step on .\core.def
k32ord.h
Creating library .\Release_APIHOOK\k32ord.lib and object .\Release_APIHOOK\k32ord.exp
Compiling resources...
Compiling...
apiconf.cpp
apiconfmgr.cpp
apihook.cpp
apilib.cpp
internals.cpp
kexcoresdk.cpp
main.cpp
ModInit.cpp
pemanip.cpp
ProcessStorage.cpp
resolver.cpp
SettingsDB.cpp
sharedmem.cpp
thunks.cpp
wildcmp.cpp
Linking...
Creating library Release_APIHOOK/KernelEx.lib and object Release_APIHOOK/KernelEx.exp
Invalid directory

KernelEx.dll - 0 error(s), 0 warning(s)
--------------------Configuration: prep - Win32 Release--------------------
Compiling...
prep.cpp
Linking...

prep.exe - 0 error(s), 0 warning(s)
--------------------Configuration: prep - Win32 Debug--------------------
Compiling...
prep.cpp
Linking...

prep.exe - 0 error(s), 0 warning(s)
--------------------Configuration: KernelEx Base NonShared - Win32 Release--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'rpcrt4\'
Directory is up to date
Processing directory: 'winspool\'
Directory is up to date
Processing directory: 'shfolder\'
Directory is up to date
Processing directory: 'winmm\'
Directory is up to date
Processing directory: 'ws2_32\'
Directory is up to date
Processing directory: 'ole32\'
Directory is up to date
Processing directory: 'cryptui\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbasen.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
allocator.c
D:\free\KernelEx-master5\apilibs\kexbasen\kernel32\jemalloc/jemalloc.c(239) : warning C4163: '_BitScanForward' : not available as an intrinsic function
DelayLoadFailureHook.c
ThreadPool.c
TlsExt.c
unikernel32.c
_user32_apilist.c
uniuser32.c
_gdi32_apilist.c
ScriptCache.cpp
UberGDI.c
unigdi32.c
_advapi32_apilist.c
uniadvapi32.c
_comdlg32_apilist.c
openfilename_fix.c
opensavefile.c
unicomdlg32.c
_shell32_apilist.c
SHBindToParent.c
SHCreateDirectoryEx.c
SHGetFolderLocation.c
SHGetFolderPath.c
SHGetSpecialFolder.c
SHParseDisplayName.c
unishell32.c
_rpcrt4_apilist.c
NdrDllGetClassObject.c
unirpcrt4.c
_winspool_apilist.c
_winspool_stubs.c
DefaultPrinter.c
uniwinspool.c
_shfolder_apilist.c
shfolder.c
_winmm_apilist.c
uniwinmm.c
_ws2_32_apilist.c
addinfo.c
select_fix.c
_ole32_apilist.c
CoWaitForMultipleHandles.c
_cryptui_apilist.c
CryptUIDlgViewContext.c
_ntdll_apilist.c
_ntdll_stubs.c
common.c
main.c
shlord.c
unifwd.c
Linking...
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
Error executing link.exe.

kexbasen.dll - 1 error(s), 1 warning(s)
--------------------Configuration: KernelEx Base NonShared - Win32 Debug--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'rpcrt4\'
Directory is up to date
Processing directory: 'winspool\'
Directory is up to date
Processing directory: 'shfolder\'
Directory is up to date
Processing directory: 'winmm\'
Directory is up to date
Processing directory: 'ws2_32\'
Directory is up to date
Processing directory: 'ole32\'
Directory is up to date
Processing directory: 'cryptui\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbasen.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
allocator.c
D:\free\KernelEx-master5\apilibs\kexbasen\kernel32\jemalloc/jemalloc.c(239) : warning C4163: '_BitScanForward' : not available as an intrinsic function
DelayLoadFailureHook.c
ThreadPool.c
TlsExt.c
unikernel32.c
_user32_apilist.c
uniuser32.c
_gdi32_apilist.c
ScriptCache.cpp
UberGDI.c
unigdi32.c
_advapi32_apilist.c
uniadvapi32.c
_comdlg32_apilist.c
openfilename_fix.c
opensavefile.c
unicomdlg32.c
_shell32_apilist.c
SHBindToParent.c
SHCreateDirectoryEx.c
SHGetFolderLocation.c
SHGetFolderPath.c
SHGetSpecialFolder.c
SHParseDisplayName.c
unishell32.c
_rpcrt4_apilist.c
NdrDllGetClassObject.c
unirpcrt4.c
_winspool_apilist.c
_winspool_stubs.c
DefaultPrinter.c
uniwinspool.c
_shfolder_apilist.c
shfolder.c
_winmm_apilist.c
uniwinmm.c
_ws2_32_apilist.c
addinfo.c
select_fix.c
_ole32_apilist.c
CoWaitForMultipleHandles.c
_cryptui_apilist.c
CryptUIDlgViewContext.c
_ntdll_apilist.c
_ntdll_stubs.c
common.c
main.c
shlord.c
unifwd.c
Linking...
LINK : fatal error LNK1104: cannot open file "../../common/KernelEx.lib"
Error executing link.exe.

kexbasen.dll - 1 error(s), 1 warning(s)
--------------------Configuration: KernelEx Base Shared - Win32 Release--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'version\'
Directory is up to date
Processing directory: 'comctl32\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbases.def
k32ord.h
Creating library .\Release\k32ord.lib and object .\Release\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
_kernel32_stubs.c
console.c
critsect.c
directory.c
file.c
inter.c
IsProcessorFeaturePresent.c
jobs.c
KEXVersion.c
locale.c
locale_casemap.c
locale_collation.c
locale_fold.c
locale_sortkey.c
locale_wctype.c
mem.c
module.c
pointer.c
port.c
process.c
RtlCaptureContext.c
session.c
thread.c
time.c
uilang.c
unikernel32.c
version.c
volume.c
widecharconv.c
_user32_apilist.c
_user32_stubs.c
desktop.c
dialog.c
display.c
exit.c
GetMouseMovePointsEx.c
input.c
LockWorkStation.c
lstr.c
menu.c
message.c
SystemParametersInfo_fix.c
thuni_conv.c
thuni_layer.c
thuni_proc.c
thuni_stuff.c
thuni_thunk.c
uniuser32.c
window.c
winsta.c
_gdi32_apilist.c
_gdi32_stubs.c
EnumFont.c
FontResourceEx.c
GdiObjects.c
GetGlyphOutlineA_fix.c
GetTextExtentPoint32_fix.c
MaskBlt.c
Orhpans.cpp
TextOut.c
unigdi32.c
_advapi32_apilist.c
_advapi32_stubs.c
lsa.c
OpenSCManager_stub.c
reg.c
RtlGenRandom.c
security.c
TraceMessage.c
uniadvapi32.c
_comdlg32_apilist.c
PrintDlgEx.c
_version_apilist.c
universion.c
_shell32_apilist.c
_shell32_stubs.c
CommandLineToArgvW.c
IsUserAnAdmin.c
shexec.c
shexit.c
shmain.c
_comctl32_apilist.c
newclassreg.c
syslink.c
_ntdll_apilist.c
_ntdll_stubs.c
error.c
handle.c
ldr.c
ntfile.c
ntmem.c
ntprocess.c
ntthread.c
rtl.c
sys.c
token.c
common.c
main.c
Linking...
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
Error executing link.exe.

kexbases.dll - 1 error(s), 0 warning(s)
--------------------Configuration: KernelEx Base Shared - Win32 Debug--------------------
Performing Custom Build Step on .\dirlist
KernelEx source preparser by Xeno86
Processing project at: .
Processing directory: 'kernel32\'
Directory is up to date
Processing directory: 'user32\'
Directory is up to date
Processing directory: 'gdi32\'
Directory is up to date
Processing directory: 'advapi32\'
Directory is up to date
Processing directory: 'comdlg32\'
Directory is up to date
Processing directory: 'shell32\'
Directory is up to date
Processing directory: 'version\'
Directory is up to date
Processing directory: 'comctl32\'
Directory is up to date
Processing directory: 'ntdll\'
Directory is up to date
Performing Custom Build Step on .\kexbases.def
k32ord.h
Creating library .\Debug\k32ord.lib and object .\Debug\k32ord.exp
Compiling resources...
Compiling...
_kernel32_apilist.c
_kernel32_stubs.c
console.c
critsect.c
directory.c
file.c
inter.c
IsProcessorFeaturePresent.c
jobs.c
KEXVersion.c
locale.c
locale_casemap.c
locale_collation.c
locale_fold.c
locale_sortkey.c
locale_wctype.c
mem.c
module.c
pointer.c
port.c
process.c
RtlCaptureContext.c
session.c
thread.c
time.c
uilang.c
unikernel32.c
version.c
volume.c
widecharconv.c
_user32_apilist.c
_user32_stubs.c
desktop.c
dialog.c
display.c
exit.c
GetMouseMovePointsEx.c
input.c
LockWorkStation.c
lstr.c
menu.c
message.c
SystemParametersInfo_fix.c
thuni_conv.c
thuni_layer.c
thuni_proc.c
thuni_stuff.c
thuni_thunk.c
uniuser32.c
window.c
winsta.c
_gdi32_apilist.c
_gdi32_stubs.c
EnumFont.c
FontResourceEx.c
GdiObjects.c
GetGlyphOutlineA_fix.c
GetTextExtentPoint32_fix.c
MaskBlt.c
Orhpans.cpp
TextOut.c
unigdi32.c
_advapi32_apilist.c
_advapi32_stubs.c
lsa.c
OpenSCManager_stub.c
reg.c
RtlGenRandom.c
security.c
TraceMessage.c
uniadvapi32.c
_comdlg32_apilist.c
PrintDlgEx.c
_version_apilist.c
universion.c
_shell32_apilist.c
_shell32_stubs.c
CommandLineToArgvW.c
IsUserAnAdmin.c
shexec.c
shexit.c
shmain.c
_comctl32_apilist.c
newclassreg.c
syslink.c
_ntdll_apilist.c
_ntdll_stubs.c
error.c
handle.c
ldr.c
ntfile.c
ntmem.c
ntprocess.c
ntthread.c
rtl.c
sys.c
token.c
common.c
main.c
Linking...
LINK : fatal error LNK1104: cannot open file "../../common/KernelEx.lib"
Error executing link.exe.

kexbases.dll - 1 error(s), 0 warning(s)
--------------------Configuration: VxD - Win32 Release--------------------
Compiling...
patch.cpp
patch_ifsmgr.cpp
patch_kernel32.cpp
pemanip.cpp
Generating Code...
Compiling...
util.c
Generating Code...
Compiling...
vxdmain.cpp
Generating Code...
Linking...

VKrnlEx.vxd - 0 error(s), 0 warning(s)
--------------------Configuration: VxD - Win32 Debug--------------------
Compiling...
debug.cpp
patch.cpp
patch_ifsmgr.cpp
patch_kernel32.cpp
pemanip.cpp
Generating Code...
Compiling...
util.c
Generating Code...
Compiling...
vxdmain.cpp
Generating Code...
Linking...

VKrnlEx.vxd - 0 error(s), 0 warning(s)
--------------------Configuration: auxiliary - Win32 Release--------------------
cd msimg32
cl /nologo /W3 /O2 /Oi /FD /c /Fomsimg32.obj msimg32.c
msimg32.c
rc /r msimgme
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:msimg32.def /OUT:..\..\output-i386\Release\msimg32.dll -nodefaultlib kernel32.lib gdi32.lib ../../kexcrt/kexcrt.lib msimg32.obj msimgme.res
Creating library ..\..\output-i386\Release\msimg32.lib and object ..\..\output-i386\Release\msimg32.exp
cd ..
cd pdh
link /LIB /NOLOGO /MACHINE:IX86 /DEF:kord.def /OUT:kord.lib
Creating library kord.lib and object kord.exp
cl /nologo /W3 /O2 /Oi /FD /c /Fopdh.obj pdh.c
pdh.c
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:pdh.def /OUT:..\..\output-i386\Release\pdh.dll -nodefaultlib kernel32.lib gdi32.lib kord.lib pdh.obj
Creating library ..\..\output-i386\Release\pdh.lib and object ..\..\output-i386\Release\pdh.exp
cd ..
cd winsta
cl /nologo /W3 /O2 /Oi /FD /c /Fowinsta.obj winsta.c
winsta.c
link /nologo /DLL /OPT:NOWIN98 /ENTRY:DllMain@12 /DEF:winsta.def /OUT:..\..\output-i386\Release\winsta.dll -nodefaultlib kernel32.lib gdi32.lib user32.lib ../../kexcrt/kexcrt.lib ../../common/KernelEx.lib winsta.obj
LINK : fatal error LNK1181: cannot open input file "../../common/KernelEx.lib"
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\VC98\BIN\link.exe"' : return code '0x49d'
Stop.
NMAKE : fatal error U1077: '"C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BIN\NMAKE.exe"' : return code '0x2'
Stop.
Error executing nmake.

auxiliary - 3 error(s), 0 warning(s)
--------------------Configuration: kexCOM - Win32 Release--------------------
Compiling...
factory.cpp
server.cpp
shelllink.cpp
Linking...
Creating library Release/kexCOM.lib and object Release/kexCOM.exp

kexCOM.dll - 0 error(s), 0 warning(s)
--------------------Configuration: kexCOM - Win32 Debug--------------------
Compiling...
factory.cpp
server.cpp
shelllink.cpp
Linking...
Creating library Debug/kexCOM.lib and object Debug/kexCOM.exp

kexCOM.dll - 0 error(s), 0 warning(s)
--------------------Configuration: kexcontrol - Win32 Release--------------------
Compiling...
kexcontrol.cpp
Linking...

kexcontrol.exe - 0 error(s), 0 warning(s)
--------------------Configuration: kexcontrol - Win32 Debug--------------------
Compiling...
kexcontrol.cpp
Linking...

kexcontrol.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sdbcreate - Win32 Release--------------------
Performing Custom Build Step on .\sdbapi.h
sdbapi.h
Creating library .\Release\sdbapi.lib and object .\Release\sdbapi.exp
Compiling...
sdbcreate.cpp
Linking...

sdbcreate.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sdbcreate - Win32 Debug--------------------
Performing Custom Build Step on .\sdbapi.h
sdbapi.h
Creating library .\Debug\sdbapi.lib and object .\Debug\sdbapi.exp
Compiling...
sdbcreate.cpp
Linking...

sdbcreate.exe - 0 error(s), 0 warning(s)
--------------------Configuration: sheet - Win32 Release--------------------
Compiling resources...
Compiling...
factory.cpp
KexLinkage.cpp
server.cpp
sheet.cpp
Linking...
Creating library Release/sheet.lib and object Release/sheet.exp

sheet.dll - 0 error(s), 0 warning(s)
--------------------Configuration: sheet - Win32 Debug--------------------
Compiling resources...
Compiling...
factory.cpp
KexLinkage.cpp
server.cpp
sheet.cpp
Linking...
Creating library Debug/sheet.lib and object Debug/sheet.exp

sheet.dll - 0 error(s), 0 warning(s)
--------------------Configuration: verify - Win32 Release--------------------
Compiling resources...
Compiling...
main.c
Linking...

verify.exe - 0 error(s), 0 warning(s)
--------------------Configuration: verify - Win32 Debug--------------------
Compiling resources...
Compiling...
main.c
Linking...

verify.exe - 0 error(s), 0 warning(s)

Here's the debug log of previous commit with KernelEX extensions ENABLED (at install time). Machine never got to show the Explorer.

Kernel Debugger  Version 4.0.6 04/28/98 21:14:27  [80386]
VKRNLEX: KernelEx Virtual Device v1.0
VKRNLEX: Critical Init
VKRNLEX: Applying IFSMGR_CheckLocks fix...
VKRNLEX: ... ok
VKRNLEX: Init
VKRNLEX: KERNEL32 located @ 0xbff70000
VKRNLEX: Preparing KERNEL32 for KernelEx...
VKRNLEX: exportfromX: pattern found @ 0xbff80372
VKRNLEX: IsKnownDLL: pattern found @ 0xbff7e785
VKRNLEX: FLoadTreeNotify1: pattern found @ 0xbff8b11e
VKRNLEX: FLoadTreeNotify2: pattern found @ 0xbff993d2
VKRNLEX: subsystem_check: pattern found @ 0xbff8796c
VKRNLEX: resource_check1: pattern found @ 0xbff86edf
VKRNLEX: resource_check2: pattern found @ 0xbff86f6a
VKRNLEX: disable_named_and_rcdata_resources_mirroring: pattern found @ 0xbff86f10
VKRNLEX: mod_imte_alloc: pattern found @ 0xbff8745c
VKRNLEX: mod_mr_alloc: pattern found @ 0xbff8196d
VKRNLEX: mod_pdb_alloc: pattern found @ 0xbff89ceb
VKRNLEX: Allocating space in section '.text' avail: 1576 needed: 72
VKRNLEX: Allocating space in section '.data' avail: 3940 needed: 40
VKRNLEX: EFO: address 0xbff8039b
VKRNLEX: EFN: address 0xbff803a9
VKRNLEX: EFO: address 0xbff83b8f
VKRNLEX: EFN: address 0xbff83ba8
VKRNLEX: KNO_DLL: address 0xbff7e78f
VKRNLEX: FLD_TRN1: address 0xbff8b12e
VKRNLEX: FLD_TRN2: address 0xbff993dd
VKRNLEX: SYS_CHK: address 0xbff87978
VKRNLEX: RES_CHK1: address 0xbff86ef2
VKRNLEX: RES_CHK2: address 0xbff86f8c
VKRNLEX: ... all done!
KernelEx Core v4.6.0 Beta 1 by Xeno86
Initializing...
KernelEx loaded @ bfa00000
internals_init()
Module table @ 0xbffcdc24
MRFromHLib @ 0xbff7c8cf
Win32 lock @ 0xbffcd490
pppdbCur @ 0xc004b7c4
pimteMax @ 0xbffcd520
TIDtoTDB @ 0xbff84f75
MRLoadTree @ 0xbff7e8a3
FreeLibTree @ 0xbff8e085
FreeLibRemove @ 0xbff8d5af
AllocHandle @ 0xbff7db02
GetHandleObject @ 0xbff7b80f
GetHandleObjectFromProcess @ 0xbff7b75b
OpenObjectByName @ 0xbff898ba
AllocObjectName @ 0xbff8c417
CreateRemoteThread @ 0xbff92a23

KernelEx directory: C:\WINDOWS\KernelEx
resolver_init()
VKRNLEX: WIN32 DEVIOCTL supported here!
VKRNLEX: VKernelEx_IOCTL_Connect
VKRNLEX: Cleaning Up
Stub found @ 0xbffd009c
Loading api configurations
Processing api configuration #0: DCFG1
Loading api library: KEXBASES...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:268) GDI resources: 89%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:269) System resources: 89%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 94%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:198) InputDesktop is NULL, don't allocate desktop handles yet
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:1101) About to switch desktop
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:1153) Switching to desktop object 0x82EC922C
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:1187) Switching to desktop 0x24 successful
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82EC9364 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:544) Input desktop has changed, redrawing screen... successful
(D:\free\KernelEx-master4\apilibs\kexbases\User32\thuni_stuff.c:49) ThunkLayer initialized: g_UserBase = 0x82457000, hUser16 = 0xBFF8902F, g_hUser32 = 0x1686
loaded @ 0xbfa40000... ok
Loading api library: KEXBASEN...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82DDED90 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
loaded @ 0x7d000000... ok
Parsing named api overrides
Processing api configuration #1: WIN95
Parsing named api overrides
Processing api configuration #2: WIN98
Parsing named api overrides
Processing api configuration #3: WINME
Parsing named api overrides
Processing api configuration #4: NT40
Parsing named api overrides
Processing api configuration #5: NT2K
Parsing named api overrides
Processing api configuration #6: WINXP
Parsing named api overrides
Processing api configuration #7: WIN2K3
Parsing named api overrides
Processing api configuration #8: VISTA
Parsing named api overrides
Processing api configuration #9: WIN2K8
Parsing named api overrides
Processing api configuration #10: NOHEAP
Parsing named api overrides
No more api configurations
Default api configuration is: DCFG1
API extensions are by default: disabled
resolver_hook() Initialized successfully
Registered SSDP Service successfullly
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74820 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E7484C created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74890 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
Loading non-shared apilib: KEXBASEN req. by: MSI.DLL [PID=fffe365b]
Post-Initializing KEXBASEN.DLL [PID=fffe365b]
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:268) GDI resources: 99%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:269) System resources: 99%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 99%
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0080f2c8,€í€,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0080f2c8,`í€,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74930 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
Loading non-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=ff8169db]
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74974 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
Post-Initializing KEXBASEN.DLL [PID=ff8169db]
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0064f720,Řńd,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0064f720,¸ńd,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E749B8 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:268) GDI resources: 99%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:269) System resources: 94%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74A40 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 94%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:287) Failed to open window station WinSta0
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:315) Trying to free some desktops
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E749FC created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:287) Dereferencing thread's desktop
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:315) Trying to free some desktops
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82E74A14 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
USBUI.DLL: unresolved export SETUPAPI.DLL:CM_Get_Child
Loading non-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=fffedb17]
Post-Initializing KEXBASEN.DLL [PID=fffedb17]
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0064f720,Řńd,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0064f720,¸ńd,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:268) GDI resources: 98%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:269) System resources: 97%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 97%
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:287) Failed to open window station WinSta0
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:315) Trying to free some desktops
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:287) Dereferencing thread's desktop
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_apilist.c:315)
Trying to free some desktops
Trap 13 (0DH) - General Protection Fault 0000
eax=00000000 ebx=0000002c ecx=82ec95d4 edx=82ec95d4 esi=82e74a98 edi=00054540
eip=bff7a391 esp=83367a30 ebp=83367a54 iopl=0 -- -- -- nv up EI pl nz na po nc
cs=0167 ss=016f ds=016f es=016f fs=17af gs=0000 cr2=8335f00a cr3=009f0000
0167:bff7a391 895004mov dword ptr [eax+04],edx ds:00000004=00700400
30##

Here's the debug log of previous commit, that was installed with KernelEx extensions DISABLED. Previous ones were installed with extensions ENABLED and never got to show the Explorer. However, the machine still hangs, either after Explorer shows, or upon starting whatever application - which may also be the fault of the kernel debugger.

Kernel Debugger  Version 4.0.6 04/28/98 21:14:27  [80386]
VKRNLEX: KernelEx Virtual Device v1.0
VKRNLEX: Critical Init
VKRNLEX: Applying IFSMGR_CheckLocks fix...
VKRNLEX: ... ok
VKRNLEX: Init
VKRNLEX: KERNEL32 located @ 0xbff70000
VKRNLEX: Preparing KERNEL32 for KernelEx...
VKRNLEX: exportfromX: pattern found @ 0xbff80372
VKRNLEX: IsKnownDLL: pattern found @ 0xbff7e785
VKRNLEX: FLoadTreeNotify1: pattern found @ 0xbff8b11e
VKRNLEX: FLoadTreeNotify2: pattern found @ 0xbff993d2
VKRNLEX: subsystem_check: pattern found @ 0xbff8796c
VKRNLEX: resource_check1: pattern found @ 0xbff86edf
VKRNLEX: resource_check2: pattern found @ 0xbff86f6a
VKRNLEX: disable_named_and_rcdata_resources_mirroring: pattern found @ 0xbff86f1
0
VKRNLEX: mod_imte_alloc: pattern found @ 0xbff8745c
VKRNLEX: mod_mr_alloc: pattern found @ 0xbff8196d
VKRNLEX: mod_pdb_alloc: pattern found @ 0xbff89ceb
VKRNLEX: Allocating space in section '.text' avail: 1576 needed: 72
VKRNLEX: Allocating space in section '.data' avail: 3940 needed: 40
VKRNLEX: EFO: address 0xbff8039b
VKRNLEX: EFN: address 0xbff803a9
VKRNLEX: EFO: address 0xbff83b8f
VKRNLEX: EFN: address 0xbff83ba8
VKRNLEX: KNO_DLL: address 0xbff7e78f
VKRNLEX: FLD_TRN1: address 0xbff8b12e
VKRNLEX: FLD_TRN2: address 0xbff993dd
VKRNLEX: SYS_CHK: address 0xbff87978
VKRNLEX: RES_CHK1: address 0xbff86ef2
VKRNLEX: RES_CHK2: address 0xbff86f8c
VKRNLEX: ... all done!
KernelEx Core v4.6.0 Beta 1 by Xeno86
Initializing...
KernelEx loaded @ bfa00000
in
ternals_init()
Module table @ 0xbffcdc24
MRFromHLib @ 0xbff7c8cf
Win32 lock @ 0xbff
cd490
pppdbCur @ 0xc004b7c4
pimteMax @ 0xbffcd520
TIDtoTDB @ 0xbff84f75
MRLoadTree @
0xbff7e8a3
FreeLibTree @ 0xbff8e085
FreeLibRemove @ 0xbff8d5af
AllocHandle @ 0xbff
7db02
GetHandleObject @ 0xbff7b80f
GetHandleObjectFromProcess @ 0xbff7b75b
OpenObje
ctByName @ 0xbff898ba
AllocObjectName @ 0xbff8c417
CreateRemoteThread @ 0xbff92a23

KernelEx directory: C:\WINDOWS\KernelEx
resolver_init()
VKRNLEX: WIN32 DEVIOCTL su
pported here!
VKRNLEX: VKernelEx_IOCTL_Connect
VKRNLEX: Cleaning Up
Stub found @ 0xbffd009c
Loading api configurations
Processing api configuration #0
: DCFG1
Loading api library: KEXBASES...
(D:\free\KernelEx-master4\apilibs\kexbas
es\User32\_user32_apilist.c:268) GDI resources: 89%
(D:\free\KernelEx-master4\api
libs\kexbases\User32\_user32_apilist.c:269) System resources: 89%
(D:\free\Kernel
Ex-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 94%
(D:
\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:198) InputDesktop is NU
LL, don't allocate desktop handles yet
(D:\free\KernelEx-master4\apilibs\kexbases
\User32\desktop.c:1101) About to switch desktop
(D:\free\KernelEx-master4\apilibs
\kexbases\User32\desktop.c:1153) Switching to desktop object 0x82EC922C
(D:\free\
KernelEx-master4\apilibs\kexbases\User32\desktop.c:1187) Switching to desktop 0x
24 successful
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) pp
i is NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\Use
r32\desktop.c:443) ppi 0x82EC9364 created !
(D:\free\KernelEx-master4\apilibs\kex
bases\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\fre
e\KernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\f
ree\KernelEx-master4\apilibs\kexbases\User32\desktop.c:544) Input desktop has ch
anged, redrawing screen... successful
(D:\free\KernelEx-master4\apilibs\kexbases\
User32\thuni_stuff.c:49) ThunkLayer initialized: g_UserBase = 0x82457000, hUser1
6 = 0xBFF8902F, g_hUser32 = 0x1686
loaded @ 0xbfa40000...
(D:\free\KernelEx-maste
r4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating a new one...
(D
:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) ppi 0x82DDA8F4 cr
eated !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:448) pti is N
ULL ! About to allocate a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\
User32\desktop.c:454) pti 0x0 created !
ok
Loading api library: KEXBASEN...
loaded
@ 0x7d000000...
ok
Parsing named api overrides
Processing api configuration #1: W
IN95
Parsing named api overrides
Processing api configuration #2: WIN98
Parsing nam
ed api overrides
Processing api configuration #3: WINME
Parsing named api override
s
Processing api configuration #4: NT40
Parsing named api overrides
Processing api
configuration #5: NT2K
Parsing named api overrides
Processing api configuration #6
: WINXP
Parsing named api overrides
Processing api configuration #7: WIN2K3
Parsing
named api overrides
Processing api configuration #8: VISTA
Parsing named api over
rides
Processing api configuration #9: WIN2K8
Parsing named api overrides
Processin
g api configuration #10: NOHEAP
Parsing named api overrides
No more api configurat
ions
Default api configuration is: DCFG1
API extensions are by default: enabled
res
olver_hook()
Initialized successfully
Registered SSDP Service successfullly
(D:\fre
e\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating
a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) p
pi 0x82E74820 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop
.c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\a
pilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
Loading non-shared apilib
: KEXBASEN req. by: MSVCRT.DLL [PID=fffeb167]
Post-Initializing KEXBASEN.DLL [PID
=fffeb167]
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi i
s NULL ! Creating a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32
\desktop.c:443) ppi 0x82E7484C created !
(D:\free\KernelEx-master4\apilibs\kexbas
es\User32\desktop.c:448) pti is NULL ! About to allocate a new one...
(D:\free\K
ernelEx-master4\apilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free
\KernelEx-master4\apilibs\kexbases\User32\desktop.c:407) ppi is NULL ! Creating
a new one...
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:443) pp
i 0x82E74890 created !
(D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.
c:448) pti is NULL ! About to allocate a new one...
(D:\free\KernelEx-master4\ap
ilibs\kexbases\User32\desktop.c:454) pti 0x0 created !
(D:\free\KernelEx-master4\
apilibs\kexbases\Kernel32\locale.c:222) (0x0418,0x0063f720,Řńc,-1079707120,0x000
004e2,1)
(D:\free\KernelEx-master4\apilibs\kexbases\Kernel32\locale.c:222) (0x041
8,0x0063f720,¸ńc,-1079707120,0x000004e2,1)
(D:\free\KernelEx-master4\apilibs\kexb
ases\User32\_user32_apilist.c:268) GDI resources: 89%
(D:\free\KernelEx-master4\a
pilibs\kexbases\User32\_user32_apilist.c:269) System resources: 89%
(D:\free\Kern
elEx-master4\apilibs\kexbases\User32\_user32_apilist.c:270) USER resources: 89%
(
D:\free\KernelEx-master4\apilibs\kexbases\User32\desktop.c:287) Failed to open w
indow station WinSta0
(D:\free\KernelEx-master4\apilibs\kexbases\User32\_user32_a
pilist.c:315) Trying to free some desktops
(D:\free\KernelEx-master4\apilibs\kexb
ases\User32\_user32_apilist.c:287) Dereferencing thread's desktop
(D:\free\Kernel
Ex-master4\apilibs\kexbases\User32\_user32_apilist.c:315) Trying to free some de
sktops
Trap 14 (0EH) - Page Fault 0004, Not Present, Read Access, User Mode
eax=82dca058 ebx=92dba03c ecx=82e748d0 edx=00100000 esi=82dca058 edi=0ffeffe4
eip=bff7a125 esp=831eca14 ebp=831eca54 iopl=0 -- -- -- nv up EI pl nz AC PE nc
cs=0167 ss=016f ds=016f es=016f fs=2197 gs=0000 cr2=92dba03c cr3=009f0000
0167:bff7a125 8b03 mov eax,dword ptr [ebx] ds:92dba03c=invalid
20##

The following is the debug log created by Xeno's version, with KernelEx extensions ENABLED:

Kernel Debugger  Version 4.0.6 04/28/98 21:14:27  [80386]
VKRNLEX: KernelEx Virtual Device v1.0
VKRNLEX: Critical Init
VKRNLEX: Applying IFSMGR_CheckLocks fix...
VKRNLEX: ... ok
VKRNLEX: Init
VKRNLEX: KERNEL32 located @ 0xbff70000
VKRNLEX: Preparing KERNEL32 for KernelEx...
VKRNLEX: exportfromX: pattern found @ 0xbff80372
VKRNLEX: IsKnownDLL: pattern found @ 0xbff7e785
VKRNLEX: FLoadTreeNotify1: pattern found @ 0xbff8b11e
VKRNLEX: FLoadTreeNotify2: pattern found @ 0xbff993d2
VKRNLEX: subsystem_check: pattern found @ 0xbff8796c
VKRNLEX: resource_check1: pattern found @ 0xbff86edf
VKRNLEX: resource_check2: pattern found @ 0xbff86f6a
VKRNLEX: disable_named_and_rcdata_resources_mirroring: pattern found @ 0xbff86f1
0
VKRNLEX: mod_imte_alloc: pattern found @ 0xbff8745c
VKRNLEX: mod_mr_alloc: pattern found @ 0xbff8196d
VKRNLEX: mod_pdb_alloc: pattern found @ 0xbff89ceb
VKRNLEX: Allocating space in section '.text' avail: 1576 needed: 72
VKRNLEX: Allocating space in section '.data' avail: 3940 needed: 40
VKRNLEX: EFO: address 0xbff8039b
VKRNLEX: EFN: address 0xbff803a9
VKRNLEX: EFO: address 0xbff83b8f
VKRNLEX: EFN: address 0xbff83ba8
VKRNLEX: KNO_DLL: address 0xbff7e78f
VKRNLEX: FLD_TRN1: address 0xbff8b12e
VKRNLEX: FLD_TRN2: address 0xbff993dd
VKRNLEX: SYS_CHK: address 0xbff87978
VKRNLEX: RES_CHK1: address 0xbff86ef2
VKRNLEX: RES_CHK2: address 0xbff86f8c
VKRNLEX: ... all done!
KernelEx Core v4.5.2 by Xeno86
Initializing...
KernelEx loaded @ bfa00000
internals
_init()
Module table @ 0xbffcdc24
MRFromHLib @ 0xbff7c8cf
Win32 lock @ 0xbffcd490
pp
pdbCur @ 0xc004b7c4
pimteMax @ 0xbffcd520
TIDtoTDB @ 0xbff84f75
MRLoadTree @ 0xbff7
e8a3
FreeLibTree @ 0xbff8e085
FreeLibRemove @ 0xbff8d5af
AllocHandle @ 0xbff7db02
Ke
rnelEx directory: C:\WINDOWS\KernelEx
resolver_init()
VKRNLEX: WIN32 DEVIOCTL supp
orted here!
VKRNLEX: VKernelEx_IOCTL_Connect
VKRNLEX: Cleaning Up
Stub found @ 0xbffd009c
Loading api configurations
Processing api configuration #0
: DCFG1
Loading api library: KEXBASES... loaded @ 0xbfa40000... ok
Loading api lib
rary: KEXBASEN... loaded @ 0x7d000000... ok
Parsing named api overrides
Processing
api configuration #1: WIN95
Parsing named api overrides
Processing api configurat
ion #2: WIN98
Parsing named api overrides
Processing api configuration #3: WINME
Pa
rsing named api overrides
Processing api configuration #4: NT40
Parsing named api
overrides
Processing api configuration #5: NT2K
Parsing named api overrides
Process
ing api configuration #6: WINXP
Parsing named api overrides
Processing api configu
ration #7: WIN2K3
Parsing named api overrides
Processing api configuration #8: VIS
TA
Parsing named api overrides
Processing api configuration #9: WIN2K8
Parsing name
d api overrides
Processing api configuration #10: NOHEAP
Parsing named api overrid
es
No more api configurations
Default api configuration is: DCFG1
API extensions ar
e by default: enabled
resolver_hook()
Initialized successfully
Loading non-shared a
pilib: KEXBASEN req. by: MSVCRT.DLL [PID=fffe8b69]
Post-Initializing KEXBASEN.DLL
[PID=fffe8b69]
Registered SSDP Service successfullly
Loading non-shared apilib: K
EXBASEN req. by: MSVCRT.DLL [PID=fffe8c6d]
Post-Initializing KEXBASEN.DLL [PID=ff
fe8c6d]
Loading non-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=fffe8c6d]
Pos
t-Initializing KEXBASEN.DLL [PID=fffe8c6d]
Loading non-shared apilib: KEXBASEN re
q. by: MSVCRT.DLL [PID=fffe8865]
Post-Initializing KEXBASEN.DLL [PID=fffe8865]
Loa
ding non-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=fffec2f1]
Post-Initiali
zing KEXBASEN.DLL [PID=fffec2f1]
Loading non-shared apilib: KEXBASEN req. by: SCA
NREGW.EXE [PID=ff8136fd]
Post-Initializing KEXBASEN.DLL [PID=ff8136fd]
Loading non
-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=ff812a71]
Post-Initializing KEX
BASEN.DLL [PID=ff812a71]
Loading non-shared apilib: KEXBASEN req. by: MSVCRT.DLL
[PID=ff816e11]
Post-Initializing KEXBASEN.DLL [PID=ff816e11]
Loading non-shared ap
ilib: KEXBASEN req. by: MSVCRT.DLL [PID=ff812d59]
Post-Initializing KEXBASEN.DLL
[PID=ff812d59]
Loading non-shared apilib: KEXBASEN req. by: MSVCRT.DLL [PID=ff81a
84d]
Post-Initializing KEXBASEN.DLL [PID=ff81a84d]
USBUI.DLL: unresolved export SE
TUPAPI.DLL:CM_Get_Child

0

Share this post


Link to post
Share on other sites

That looks great, Ley0k!

Would someone care to compile his repository, for some of us newbies?

It seems somewhat of a headache to compile. For starters, if you don't have or use the tools thats needed, then one must learn them all. This can be time consuming. I guess we will have to wait for someone to compile it.

I can compile it successfully and test it (otherwise I wouldn't even improve KernelEx lol).

As COMPILE.TXT says, you will need Microsoft Visual C++ 6.0 SP6 to compile.

I have been trying to compile the NSIS Installer (Kernelex.nsi) for a while now, but it keeps throwing up errors that it can't find files in the destination dir. These are the sections in the .NSI that caused the error:

  ;Files to install

;UpdateDLL_Func params:
;$R4 - target; $R5 - tempdir; $R6 - register?; $R7 - source
GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\KernelEx.dll"
StrCpy $R4 "$INSTDIR\KernelEx.dll"
StrCpy $R6 "0"
StrCpy $R7 $0
Call UpgradeDLL_Func

GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\kexbases.dll"
StrCpy $R4 "$INSTDIR\kexbases.dll"
StrCpy $R6 "0"
StrCpy $R7 $0
Call UpgradeDLL_Func

GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\kexbasen.dll"
StrCpy $R4 "$INSTDIR\kexbasen.dll"
StrCpy $R6 "0"
StrCpy $R7 $0
Call UpgradeDLL_Func

GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\sheet.dll"
StrCpy $R4 "$INSTDIR\sheet.dll"
StrCpy $R6 "1"
StrCpy $R7 $0
Call UpgradeDLL_Func

GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\kexCOM.dll"
StrCpy $R4 "$INSTDIR\kexCOM.dll"
StrCpy $R6 "1"
StrCpy $R7 $0
Call UpgradeDLL_Func

SetOverwrite on

File apilibs\core.ini
File apilibs\settings.reg
File license.txt
File "Release Notes.txt"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 "output-i386\${FLAVOUR}\VKrnlEx.vxd"
Delete "$INSTDIR\VKrnlEx.vxd"
Rename /REBOOTOK $0 "$INSTDIR\VKrnlEx.vxd"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\msimg32.dll
Delete "$INSTDIR\msimg32.dll"
Rename /REBOOTOK $0 "$INSTDIR\msimg32.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"MSIMG32" "MSIMG32.DLL"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\pdh.dll
Delete "$INSTDIR\pdh.dll"
Rename /REBOOTOK $0 "$INSTDIR\pdh.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"PDH" "PDH.DLL"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\psapi.dll
Delete "$INSTDIR\psapi.dll"
Rename /REBOOTOK $0 "$INSTDIR\psapi.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"PSAPI" "PSAPI.DLL"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\uxtheme.dll
Delete "$INSTDIR\uxtheme.dll"
Rename /REBOOTOK $0 "$INSTDIR\uxtheme.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"UXTHEME" "UXTHEME.DLL"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\wtsapi32.dll
Delete "$INSTDIR\wtsapi32.dll"
Rename /REBOOTOK $0 "$INSTDIR\wtsapi32.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"WTSAPI32" "WTSAPI32.DLL"

GetTempFileName $0 "$INSTDIR"
File /oname=$0 output-i386\Release\userenv.dll
Delete "$INSTDIR\userenv.dll"
Rename /REBOOTOK $0 "$INSTDIR\userenv.dll"
WriteRegStr HKLM "Software\KernelEx\KnownDLLs" \
"USERENV" "USERENV.DLL"

(If I remove one of the lines that caused the error message, it will just move to the next file and bring up the same error message as well. Just removing those lines in the file would make no sense, because the files described in there are critical to the main functionality of KernelEx (I think))

This is the error message I get with or without removing the lines.

File: "output-i386\Debug\KernelEx.dll" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
/oname=outfile one_file_only)
Error in script "C:\WINDOWS\Desktop\KernelEx-master\KernelEx.nsi" on line 244 -- aborting creation process

From what I can tell, It seems to create the installation directory (output-i386 or as NSIS would call it '$INSTDIR'), but it can't find any data in that directory, and that's a problem.

I also tried to compile some of the C++ .dsw files with VC++ 6.0, but it keeps telling me it can't execute (or find) rc.exe, cl.exe, etc.

Edited by coolman
0

Share this post


Link to post
Share on other sites

All the errors you get are due to incorrect/incomplete installation of the development environment. The file COMPILE.TXT in the root of the KernelEx source folder specifies the prerequisites:

- Visual C++ 6.0 SP6

- updated xtree header

- Platform SDK february 2003

- Windows 98/2000 DDK

In VC6 main menu > Tools > Options > Directories go through all items in the 'Show directories for' list and make sure the order of the items is as follows (that's important!):

Executable files

C:\Program Files\Microsoft Visual Studio\VC98\BIN

C:\Program Files\Microsoft Visual Studio\COMMON\MSDEV98\BIN

C:\Program Files\Microsoft Visual Studio\COMMON\TOOLS

C:\Program Files\Microsoft Visual Studio\COMMON\TOOLS\WIN95

C:\Program Files\Microsoft SDK\BIN

<other>

Include files

C:\Program Files\Microsoft SDK\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

C:\Program Files\98DDK\INC\WIN98

<other>

Library files

C:\Program Files\Microsoft SDK\LIB

C:\Program Files\Microsoft Visual Studio\VC98\LIB

C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB

C:\Program Files\98DDK\LIB\I386\FREE

<other>

Source files

C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC

<other>

Also, if you're running VC6 under Win98/ME (and maybe not only these), there are a few additions required in AUTOEXEC.BAT so the system would know where to get the tools from:


SET PATH=%PATH%;C:\PROGRA~1\MICROS~6\Bin;C:\PROGRA~1\MICROS~6\Bin\Win9x;C:\PROGRA~1\MICROS~4\Common\MSDev98\Bin;C:\PROGRA~1\MICROS~4\Common\Tools
SET Basemake="C:\Program Files\Microsoft SDK\Include\BKOffice.Mak"
SET Bkoffice="C:\Program Files\Microsoft SDK\."
SET INCLUDE="C:\Program Files\Microsoft SDK\Include\."
SET INETSDK="C:\Program Files\Microsoft SDK\."
SET LIB="C:\Program Files\Microsoft SDK\Lib\."
SET MSSdk="C:\Program Files\Microsoft SDK\."
SET Mstools="C:\Program Files\Microsoft SDK\."

Please note that some of the items in the PATH variable may have different short names on each system, depending on the path they've been installed to; they usually are added by VC6 at installation time but I recall there's an option to skip this step so please check. There may be an option to add these system variables from within VC6 but I can't say where exactly - maybe someone else could chime in on this matter.

Also please note that not all of the items in the Directory list groups are required in order to correctly compile KernelEx but they may be required for other projects, so it's a good idea to set them up properly right now. If someone more knowledgeable notices anything wrong or missing with my advices, please do correct me.

Finally, please do read above in this topic in regard to a few minor issues in the KernelEx project files.

Oh and just to be clear: the NSIS packager cannot pack something that has not been compiled, so you definitely have to make VC6 work, compile the whole KernelEx project in batch mode and only after that launch the NSIS packager. The current .nsi script builds the Debug version of KernelEx so all pertaining components should be compiled and available. Using the modified project files I provided in the reply above, should allow a flawless batch compilation of the whole project. Just make sure there's enough free space on that partition.

Good luck! ;)

Edited by Drugwash
0

Share this post


Link to post
Share on other sites
Has anyone tried the modified projects from here? Do they work for you as they do for me?

Hallo Drugwash,

I've installed the KernelEX Build Environment on ME and Vista, but I think my environment is still faulty. All "Batch Builds" gives errors and hence to compile with NSIS 2.44. I have yet to read, learn and test a lot. I hope the next days I get some positive results. I'll report! I don't have the 98DDK. The downlads on MDGX are dead - "You're sunk in windows ...error 404"?? - . I have 2K / ME DDK's. Xeno says: "Microsoft Windows 98 Driver Development Kit or Microsoft Windows 2000 Driver Development Kit". On Vista I get on install and start Visual Studio 6.0 messages stating "known compatibility issues". But obviously it seems to run.?.

0

Share this post


Link to post
Share on other sites

I also tried to compile some of the C++ .dsw files with VC++ 6.0, but it keeps telling me it can't execute (or find) rc.exe, cl.exe, etc.

Same message I got, If I wasn't working on other projects, I would have invested more time in it. Lets hope someone can compile it correctly since it seems like everyone is having some issue or another.
0

Share this post


Link to post
Share on other sites

@ schwups: VC6 is old, it may not be 100% compatible with newer Windows; should work under ME though. Problem is, ME doesn't have a real DOS and doesn't take into account autoexec.bat, so even if VC6 and PSDK added the required lines, they will not take effect.

I wish I had more experience with ME, to know how to overcome this issue. Thing is, VC6 and PSDK need those environment variables to know where to find its tools. If those variables aren't set (which is the job of the autoexec.bat lines), VC6 will fail. Maybe the variables can be set through the registry, but we'll have to wait for someone more knowledgeable to point to the right direction. After that, the rest of the settings I listed in the post above should be checked and properly set.

One alternative solution would be to install a virtual machine under Vista, install 98SE and set up VC6, PSDK and the rest of the development environment, then try to compile. Personally I'm not a big fan of virtual environments, always did things on real hardware even if it took much longer (that's what experience builds up from), but in extreme situations such environment may prove useful. Well, it's worth a shot anyway.

@ PROBLEMCHYLD: I've always managed to build the project, but only after a few small changes to the projects. Unfortunately, after installing it, the machine hangs upon reboot. I've provided a few debug logs above, hopefully they'd be of some use. Haven't checked out the repository today, see if there's any newer commit; will do that soonish.

Please see my reply above to schwups, your problem might be the same, with missing environment variables in autoexec.bat.

0

Share this post


Link to post
Share on other sites

KernelEx does build properly under both Windows 98 SE and Windows 7 Pro x64.

Just follow the instructions here:

http://kernelex.sourceforge.net/wiki/Building_KernelEx

No virtual machine is needed.

Autoexec.bat changes aren't needed. Just set up the paths correctly inside VC6!

VC6 is 100% compatible with Windows 7 x64.

The guide applies to vanilla v4.5.2 only, cannot warrant that it will work with 3rd party mods.

0

Share this post


Link to post
Share on other sites

Those settings should work with both Xeno86's version and Ley0k's. I can build both of them without problems.

The environment variables in autoexec.bat may not be required by KernelEx, but they're automatically created at PSDK install time and may be needed by other projects, so it may not be a bad idea to have them properly set, especially for those that may wanna use this environment to build other open-source projects.

Today I've disabled the debugger on the test machine, compiled the Release version from Ley0k and installed it. Upon reboot, mprexe crashed and subsequently KernelEx reported a failed installation. Manually launching the verify tool reports the same thing. However, the Compatibility tab appears in apps' properties. Kernelex.dll is loaded in mprexe's namespace, kexcom.dll is loaded in explorer's, but neither kexbasen nor kexbases are loaded by any executable. Machine does not hang anymore. I've also disabled the SSDP service (installed by uSP) prior to installing KernelEx - don't know if that had any impact, but reenabling it sure didn't change anything. MPREXE crashes at every boot, otherwise machine appears to be running normally.

What else can I do to help?

Here's the standard crash report:

MPREXE caused an invalid page fault in
module KERNEL32.DLL at 0167:bff9e0b7.
Registers:
EAX=0072f5e0 CS=0167 EIP=bff9e0b7 EFLGS=00000246
EBX=81c08380 SS=016f ESP=0072f430 EBP=0072f5e0
ECX=0000016f DS=016f ESI=00001da7 FS=1da7
EDX=0072f5d0 ES=016f EDI=0000016f GS=0000
Bytes at CS:EIP:
cc a1 e0 dc fc bf 8b 00 66 64 f7 05 1c 00 00 00
Stack dump:
bfa40000 81c083c4 81c09d9c 81c09d64
81c09d78 c196b220 00000000 0072f5ec
ffecbad7 0072f480 0072f464 0000000e
00000007 00000000 00000000 0072f488

0

Share this post


Link to post
Share on other sites

Edited by Leyok
0

Share this post


Link to post
Share on other sites

On the subject of Windows Me environment variables, my understanding is that WinME uses both autoexec.bat and the HKLM\System\CurrentControlSet\Control\SessionManager\Environment registry key for setting environment variables. In case autoexec.bat entries aren't getting set, it will suffice to run msconfig which will automatically copy the autoexec.bat entries into the registry and they will sure be set at the next reboot.

0

Share this post


Link to post
Share on other sites

@ Leyok: Thanks for the explanation. Is there a way to communicate with the debugger, from the other machine, to resume operation and/or get more useful information? I use Hyperterminal to watch the boot progress, although I don't like it keeping the message history. Anyway, let me know if there's anything else I can do.

@ loblo: Good info! :) Apparently, XP uses the same location for its pseudo-DOS mode.

Anyway, the locations pertaining to VC6 and PSDK, found in the PATH variable string from my post above, should be set in VC6's Executable files section, as mentioned in the same post. This goes for any host OS.

In Windows ME, the other variables can be set in the Registry, at the location mentioned by loblo above, if necessary.

I'm thinking, the entries in autoexec.bat may be required only when using the tools outside the VC6 environment, that is manually building the projects in commandline mode.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.