mirror of
https://github.com/UzixLS/KernelEx.git
synced 2025-07-18 23:11:19 +03:00
import KernelEx-4.0-RC2
This commit is contained in:
31
CHANGELOG.txt
Executable file
31
CHANGELOG.txt
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
KernelEx v4.0 RC 2 by Xeno86
|
||||||
|
2009-03-21
|
||||||
|
|
||||||
|
fixed uxtheme version check
|
||||||
|
added compilation instructions
|
||||||
|
fixed msimg32.AlphaBlend bug incorrectly calculating transparency
|
||||||
|
added kernel32.GetVersionW to default configuration
|
||||||
|
added advapi32.OpenSCManager stubs
|
||||||
|
implemented kernel32.GetConsoleWindow
|
||||||
|
modified CreateFile, ReadFile and WriteFile so that they now accept overlapped flag
|
||||||
|
fixed non-working MoveFileWithProgressA
|
||||||
|
fix: DirectX setup has disabled extensions
|
||||||
|
added psapi.EmptyWorkingSet stub
|
||||||
|
change: KernelEx will first load any other MPRServices before initializing
|
||||||
|
added workaround for situation where some kernel driver hijacked system functions
|
||||||
|
added missing disable resource check fix
|
||||||
|
removed GetMessageW from kexbasen (already in kexbases)
|
||||||
|
fixed issue where installer wouldn't complete on fresh system
|
||||||
|
fixed BSOD or crashes on shutdown on certain configurations by preventing early unload
|
||||||
|
fixed compatibility sheet not working properly for shortcuts
|
||||||
|
implemented kernel32.IsProcessorFeaturePresent
|
||||||
|
fix: check if last element in merge list does repeat
|
||||||
|
fixed compilation issue with PSDK 2003
|
||||||
|
fixed Core not displaying error messages correctly
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
KernelEx v4.0 RC 1 by Xeno86
|
||||||
|
2009-03-10
|
||||||
|
|
||||||
|
First public release of KernelEx rewritten from scratch and based on new architecture
|
30
COMPATIBILITY.txt
Executable file
30
COMPATIBILITY.txt
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
KernelEx v4.0 RC 2 by Xeno86
|
||||||
|
2009-03-21
|
||||||
|
|
||||||
|
Now working on Windows 98/Me:
|
||||||
|
-----------------------------
|
||||||
|
* The Chronicles of Riddick EFBB Demo
|
||||||
|
* QEmu 0.9
|
||||||
|
|
||||||
|
Fixed regressions:
|
||||||
|
------------------
|
||||||
|
* .Net framework was broken in RC 1 now should work correctly
|
||||||
|
* input issue in Firefox 3 affecting special characters
|
||||||
|
* eMule couldn't complete downloads in RC 1, now fixed
|
||||||
|
* transparency issue in Firefox 3
|
||||||
|
* incompatibility with Norton Utilities
|
||||||
|
|
||||||
|
#################################################
|
||||||
|
|
||||||
|
KernelEx v4.0 RC 1 by Xeno86
|
||||||
|
2009-03-10
|
||||||
|
|
||||||
|
Now working on Windows 98/Me:
|
||||||
|
-----------------------------
|
||||||
|
* Firefox 3.6 alpha
|
||||||
|
* JDK 6 / JRE 6 works fine with the exception of Java applets which don't work (reason: missing proper named-pipe support in the system)
|
||||||
|
* PDF-XChange Viewer now works
|
||||||
|
|
||||||
|
Fixed regressions:
|
||||||
|
------------------
|
||||||
|
* Sysinternals TCPView display fix
|
6
COMPILE.TXT
Executable file
6
COMPILE.TXT
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
To compile you need Microsoft Visual C++ 6.0 SP6
|
||||||
|
First you need to compile KEXCRT project as other projects rely on it.
|
||||||
|
To build KEXCONTROL you have to build debug CORE first.
|
||||||
|
KEXBASES and KEXBASEN projects rely on CORE be built first.
|
||||||
|
|
||||||
|
-Xeno86
|
@ -1,4 +1,4 @@
|
|||||||
!define VERSION '4.0 RC 1'
|
!define VERSION '4.0 RC 2'
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
;Includes
|
;Includes
|
||||||
@ -10,6 +10,8 @@
|
|||||||
;--------------------------------
|
;--------------------------------
|
||||||
;General
|
;General
|
||||||
|
|
||||||
|
SetCompressor /SOLID lzma
|
||||||
|
|
||||||
;Name and file
|
;Name and file
|
||||||
Name "KernelEx"
|
Name "KernelEx"
|
||||||
Caption "KernelEx ${VERSION} Setup"
|
Caption "KernelEx ${VERSION} Setup"
|
||||||
|
40
apilibs/CORE.INI
Normal file → Executable file
40
apilibs/CORE.INI
Normal file → Executable file
@ -17,8 +17,6 @@ noshow=1
|
|||||||
|
|
||||||
[DCFG1.names.98]
|
[DCFG1.names.98]
|
||||||
KERNEL32.GetVersion=std
|
KERNEL32.GetVersion=std
|
||||||
KERNEL32.GetVersionExA=std
|
|
||||||
KERNEL32.GetVersionExW=std
|
|
||||||
GDI32.SetWorldTransform=kexbases.0
|
GDI32.SetWorldTransform=kexbases.0
|
||||||
GDI32.GetRandomRgn=std
|
GDI32.GetRandomRgn=std
|
||||||
GDI32.SetGraphicsMode=std
|
GDI32.SetGraphicsMode=std
|
||||||
@ -28,8 +26,6 @@ KERNEL32.VerifyVersionInfoW=none
|
|||||||
|
|
||||||
[DCFG1.names.Me]
|
[DCFG1.names.Me]
|
||||||
KERNEL32.GetVersion=std
|
KERNEL32.GetVersion=std
|
||||||
KERNEL32.GetVersionExA=std
|
|
||||||
KERNEL32.GetVersionExW=std
|
|
||||||
GDI32.SetWorldTransform=kexbases.0
|
GDI32.SetWorldTransform=kexbases.0
|
||||||
GDI32.GetRandomRgn=std
|
GDI32.GetRandomRgn=std
|
||||||
GDI32.SetGraphicsMode=std
|
GDI32.SetGraphicsMode=std
|
||||||
@ -46,8 +42,8 @@ desc=Windows 95
|
|||||||
|
|
||||||
[WIN95.names]
|
[WIN95.names]
|
||||||
KERNEL32.GetVersion=kexbases.0
|
KERNEL32.GetVersion=kexbases.0
|
||||||
KERNEL32.GetVersionExA=kexbases.0
|
KERNEL32.GetVersionExA=kexbases.1
|
||||||
KERNEL32.GetVersionExW=kexbases.0
|
KERNEL32.GetVersionExW=kexbases.1
|
||||||
|
|
||||||
[WIN98]
|
[WIN98]
|
||||||
inherit=WIN95
|
inherit=WIN95
|
||||||
@ -55,8 +51,8 @@ desc=Windows 98 SE
|
|||||||
|
|
||||||
[WIN98.names]
|
[WIN98.names]
|
||||||
KERNEL32.GetVersion=kexbases.1
|
KERNEL32.GetVersion=kexbases.1
|
||||||
KERNEL32.GetVersionExA=kexbases.1
|
KERNEL32.GetVersionExA=kexbases.2
|
||||||
KERNEL32.GetVersionExW=kexbases.1
|
KERNEL32.GetVersionExW=kexbases.2
|
||||||
|
|
||||||
[WINME]
|
[WINME]
|
||||||
inherit=WIN98
|
inherit=WIN98
|
||||||
@ -64,8 +60,8 @@ desc=Windows Millennium
|
|||||||
|
|
||||||
[WINME.names]
|
[WINME.names]
|
||||||
KERNEL32.GetVersion=kexbases.2
|
KERNEL32.GetVersion=kexbases.2
|
||||||
KERNEL32.GetVersionExA=kexbases.2
|
KERNEL32.GetVersionExA=kexbases.3
|
||||||
KERNEL32.GetVersionExW=kexbases.2
|
KERNEL32.GetVersionExW=kexbases.3
|
||||||
|
|
||||||
[NT40]
|
[NT40]
|
||||||
inherit=WIN95
|
inherit=WIN95
|
||||||
@ -73,8 +69,8 @@ desc=Windows NT 4.0 SP6
|
|||||||
|
|
||||||
[NT40.names]
|
[NT40.names]
|
||||||
KERNEL32.GetVersion=kexbases.3
|
KERNEL32.GetVersion=kexbases.3
|
||||||
KERNEL32.GetVersionExA=kexbases.3
|
KERNEL32.GetVersionExA=kexbases.4
|
||||||
KERNEL32.GetVersionExW=kexbases.3
|
KERNEL32.GetVersionExW=kexbases.4
|
||||||
|
|
||||||
[NT2K]
|
[NT2K]
|
||||||
inherit=NT40
|
inherit=NT40
|
||||||
@ -82,8 +78,8 @@ desc=Windows 2000 SP4
|
|||||||
|
|
||||||
[NT2K.names]
|
[NT2K.names]
|
||||||
KERNEL32.GetVersion=kexbases.4
|
KERNEL32.GetVersion=kexbases.4
|
||||||
KERNEL32.GetVersionExA=kexbases.4
|
KERNEL32.GetVersionExA=kexbases.5
|
||||||
KERNEL32.GetVersionExW=kexbases.4
|
KERNEL32.GetVersionExW=kexbases.5
|
||||||
GDI32.SetWorldTransform=kexbases.1
|
GDI32.SetWorldTransform=kexbases.1
|
||||||
GDI32.GetRandomRgn=kexbases.0
|
GDI32.GetRandomRgn=kexbases.0
|
||||||
GDI32.SetGraphicsMode=kexbases.0
|
GDI32.SetGraphicsMode=kexbases.0
|
||||||
@ -97,8 +93,8 @@ desc=Windows XP SP2
|
|||||||
|
|
||||||
[WINXP.names]
|
[WINXP.names]
|
||||||
KERNEL32.GetVersion=kexbases.5
|
KERNEL32.GetVersion=kexbases.5
|
||||||
KERNEL32.GetVersionExA=kexbases.5
|
KERNEL32.GetVersionExA=kexbases.6
|
||||||
KERNEL32.GetVersionExW=kexbases.5
|
KERNEL32.GetVersionExW=kexbases.6
|
||||||
KERNEL32.VerifyVersionInfoA=kexbases.1
|
KERNEL32.VerifyVersionInfoA=kexbases.1
|
||||||
KERNEL32.VerifyVersionInfoW=kexbases.1
|
KERNEL32.VerifyVersionInfoW=kexbases.1
|
||||||
|
|
||||||
@ -108,8 +104,8 @@ desc=Windows 2003 SP1
|
|||||||
|
|
||||||
[WIN2K3.names]
|
[WIN2K3.names]
|
||||||
KERNEL32.GetVersion=kexbases.6
|
KERNEL32.GetVersion=kexbases.6
|
||||||
KERNEL32.GetVersionExA=kexbases.6
|
KERNEL32.GetVersionExA=kexbases.7
|
||||||
KERNEL32.GetVersionExW=kexbases.6
|
KERNEL32.GetVersionExW=kexbases.7
|
||||||
KERNEL32.VerifyVersionInfoA=kexbases.2
|
KERNEL32.VerifyVersionInfoA=kexbases.2
|
||||||
KERNEL32.VerifyVersionInfoW=kexbases.2
|
KERNEL32.VerifyVersionInfoW=kexbases.2
|
||||||
|
|
||||||
@ -119,8 +115,8 @@ desc=Windows Vista
|
|||||||
|
|
||||||
[VISTA.names]
|
[VISTA.names]
|
||||||
KERNEL32.GetVersion=kexbases.7
|
KERNEL32.GetVersion=kexbases.7
|
||||||
KERNEL32.GetVersionExA=kexbases.7
|
KERNEL32.GetVersionExA=kexbases.8
|
||||||
KERNEL32.GetVersionExW=kexbases.7
|
KERNEL32.GetVersionExW=kexbases.8
|
||||||
KERNEL32.VerifyVersionInfoA=kexbases.3
|
KERNEL32.VerifyVersionInfoA=kexbases.3
|
||||||
KERNEL32.VerifyVersionInfoW=kexbases.3
|
KERNEL32.VerifyVersionInfoW=kexbases.3
|
||||||
|
|
||||||
@ -130,7 +126,7 @@ desc=Windows 2008 SP1
|
|||||||
|
|
||||||
[WIN2K8.names]
|
[WIN2K8.names]
|
||||||
KERNEL32.GetVersion=kexbases.8
|
KERNEL32.GetVersion=kexbases.8
|
||||||
KERNEL32.GetVersionExA=kexbases.8
|
KERNEL32.GetVersionExA=kexbases.9
|
||||||
KERNEL32.GetVersionExW=kexbases.8
|
KERNEL32.GetVersionExW=kexbases.9
|
||||||
KERNEL32.VerifyVersionInfoA=kexbases.4
|
KERNEL32.VerifyVersionInfoA=kexbases.4
|
||||||
KERNEL32.VerifyVersionInfoW=kexbases.4
|
KERNEL32.VerifyVersionInfoW=kexbases.4
|
||||||
|
0
apilibs/kexbasen/advapi32/_advapi32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/advapi32/_advapi32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/advapi32/_advapi32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/advapi32/_advapi32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/advapi32/uniadvapi32.c
Normal file → Executable file
0
apilibs/kexbasen/advapi32/uniadvapi32.c
Normal file → Executable file
0
apilibs/kexbasen/auxdecl.h
Normal file → Executable file
0
apilibs/kexbasen/auxdecl.h
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/_comdlg32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/_comdlg32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/_comdlg32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/_comdlg32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/unicomdlg32.c
Normal file → Executable file
0
apilibs/kexbasen/comdlg32/unicomdlg32.c
Normal file → Executable file
0
apilibs/kexbasen/common.c
Normal file → Executable file
0
apilibs/kexbasen/common.c
Normal file → Executable file
0
apilibs/kexbasen/common.h
Normal file → Executable file
0
apilibs/kexbasen/common.h
Normal file → Executable file
0
apilibs/kexbasen/dirlist
Normal file → Executable file
0
apilibs/kexbasen/dirlist
Normal file → Executable file
0
apilibs/kexbasen/gdi32/UberGDI.c
Normal file → Executable file
0
apilibs/kexbasen/gdi32/UberGDI.c
Normal file → Executable file
0
apilibs/kexbasen/gdi32/_gdi32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/gdi32/_gdi32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/gdi32/_gdi32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/gdi32/_gdi32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/gdi32/unigdi32.c
Normal file → Executable file
0
apilibs/kexbasen/gdi32/unigdi32.c
Normal file → Executable file
0
apilibs/kexbasen/kernel32/_kernel32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/kernel32/_kernel32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/kernel32/_kernel32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/kernel32/_kernel32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/kernel32/unikernel32.c
Normal file → Executable file
0
apilibs/kexbasen/kernel32/unikernel32.c
Normal file → Executable file
0
apilibs/kexbasen/kexbasen.def
Normal file → Executable file
0
apilibs/kexbasen/kexbasen.def
Normal file → Executable file
0
apilibs/kexbasen/kexbasen.dsp
Normal file → Executable file
0
apilibs/kexbasen/kexbasen.dsp
Normal file → Executable file
8
apilibs/kexbasen/kexbasen.rc
Normal file → Executable file
8
apilibs/kexbasen/kexbasen.rc
Normal file → Executable file
@ -54,8 +54,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 4,0,1,0
|
FILEVERSION 4,0,1,2
|
||||||
PRODUCTVERSION 4,0,1,0
|
PRODUCTVERSION 4,0,1,2
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -73,14 +73,14 @@ BEGIN
|
|||||||
VALUE "Comments", "\0"
|
VALUE "Comments", "\0"
|
||||||
VALUE "CompanyName", "Xeno86\0"
|
VALUE "CompanyName", "Xeno86\0"
|
||||||
VALUE "FileDescription", "KernelEx Base Non-shared Api Library\0"
|
VALUE "FileDescription", "KernelEx Base Non-shared Api Library\0"
|
||||||
VALUE "FileVersion", "4, 0, 1, 0\0"
|
VALUE "FileVersion", "4, 0, 1, 2\0"
|
||||||
VALUE "InternalName", "kexbasen\0"
|
VALUE "InternalName", "kexbasen\0"
|
||||||
VALUE "LegalCopyright", "Copyright <20> 2009, Xeno86\0"
|
VALUE "LegalCopyright", "Copyright <20> 2009, Xeno86\0"
|
||||||
VALUE "LegalTrademarks", "\0"
|
VALUE "LegalTrademarks", "\0"
|
||||||
VALUE "OriginalFilename", "kexbasen.dll\0"
|
VALUE "OriginalFilename", "kexbasen.dll\0"
|
||||||
VALUE "PrivateBuild", "\0"
|
VALUE "PrivateBuild", "\0"
|
||||||
VALUE "ProductName", "KernelEx\0"
|
VALUE "ProductName", "KernelEx\0"
|
||||||
VALUE "ProductVersion", "4, 0, 1, 0\0"
|
VALUE "ProductVersion", "4, 0, 1, 2\0"
|
||||||
VALUE "SpecialBuild", "\0"
|
VALUE "SpecialBuild", "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
0
apilibs/kexbasen/main.c
Normal file → Executable file
0
apilibs/kexbasen/main.c
Normal file → Executable file
0
apilibs/kexbasen/resource.h
Normal file → Executable file
0
apilibs/kexbasen/resource.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/SHGetFolderLocation.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/SHGetFolderLocation.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/SHGetFolderPath.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/SHGetFolderPath.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/_shell32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/_shell32_apilist.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/_shell32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/_shell32_apilist.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/auxshlguid.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/auxshlguid.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/pidl.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/pidl.h
Normal file → Executable file
0
apilibs/kexbasen/shell32/unishell32.c
Normal file → Executable file
0
apilibs/kexbasen/shell32/unishell32.c
Normal file → Executable file
0
apilibs/kexbasen/shell32ord.def
Normal file → Executable file
0
apilibs/kexbasen/shell32ord.def
Normal file → Executable file
0
apilibs/kexbasen/unifwd.c
Normal file → Executable file
0
apilibs/kexbasen/unifwd.c
Normal file → Executable file
0
apilibs/kexbasen/unifwd.h
Normal file → Executable file
0
apilibs/kexbasen/unifwd.h
Normal file → Executable file
1
apilibs/kexbasen/user32/_user32_apilist.c
Normal file → Executable file
1
apilibs/kexbasen/user32/_user32_apilist.c
Normal file → Executable file
@ -87,7 +87,6 @@ static const apilib_named_api user32_named_apis[] =
|
|||||||
DECL_API("GetKeyboardLayoutNameW", GetKeyboardLayoutNameW_fwd),
|
DECL_API("GetKeyboardLayoutNameW", GetKeyboardLayoutNameW_fwd),
|
||||||
DECL_API("GetMenuItemInfoW", GetMenuItemInfoW_fwd),
|
DECL_API("GetMenuItemInfoW", GetMenuItemInfoW_fwd),
|
||||||
DECL_API("GetMenuStringW", GetMenuStringW_fwd),
|
DECL_API("GetMenuStringW", GetMenuStringW_fwd),
|
||||||
DECL_API("GetMessageW", GetMessageW_fwd),
|
|
||||||
DECL_API("GetMonitorInfoW", GetMonitorInfoW_fwd),
|
DECL_API("GetMonitorInfoW", GetMonitorInfoW_fwd),
|
||||||
DECL_API("GetPropW", GetPropW_fwd),
|
DECL_API("GetPropW", GetPropW_fwd),
|
||||||
DECL_API("GetTabbedTextExtentW", GetTabbedTextExtentW_fwd),
|
DECL_API("GetTabbedTextExtentW", GetTabbedTextExtentW_fwd),
|
||||||
|
1
apilibs/kexbasen/user32/_user32_apilist.h
Normal file → Executable file
1
apilibs/kexbasen/user32/_user32_apilist.h
Normal file → Executable file
@ -83,7 +83,6 @@ FWDPROC GetKeyboardLayoutNameW_fwd;
|
|||||||
FWDPROC GetKeyNameTextW_fwd;
|
FWDPROC GetKeyNameTextW_fwd;
|
||||||
FWDPROC GetMenuItemInfoW_fwd;
|
FWDPROC GetMenuItemInfoW_fwd;
|
||||||
FWDPROC GetMenuStringW_fwd;
|
FWDPROC GetMenuStringW_fwd;
|
||||||
FWDPROC GetMessageW_fwd;
|
|
||||||
FWDPROC GetMonitorInfoW_fwd;
|
FWDPROC GetMonitorInfoW_fwd;
|
||||||
FWDPROC GetPropW_fwd;
|
FWDPROC GetPropW_fwd;
|
||||||
FWDPROC GetTabbedTextExtentW_fwd;
|
FWDPROC GetTabbedTextExtentW_fwd;
|
||||||
|
1
apilibs/kexbasen/user32/uniuser32.c
Normal file → Executable file
1
apilibs/kexbasen/user32/uniuser32.c
Normal file → Executable file
@ -106,7 +106,6 @@ FORWARD_TO_UNICOWS(GetKeyboardLayoutNameW);
|
|||||||
FORWARD_TO_UNICOWS(GetKeyNameTextW);
|
FORWARD_TO_UNICOWS(GetKeyNameTextW);
|
||||||
FORWARD_TO_UNICOWS(GetMenuItemInfoW);
|
FORWARD_TO_UNICOWS(GetMenuItemInfoW);
|
||||||
FORWARD_TO_UNICOWS(GetMenuStringW);
|
FORWARD_TO_UNICOWS(GetMenuStringW);
|
||||||
FORWARD_TO_UNICOWS(GetMessageW);
|
|
||||||
FORWARD_TO_UNICOWS(GetMonitorInfoW);
|
FORWARD_TO_UNICOWS(GetMonitorInfoW);
|
||||||
FORWARD_TO_UNICOWS(GetPropW);
|
FORWARD_TO_UNICOWS(GetPropW);
|
||||||
FORWARD_TO_UNICOWS(GetTabbedTextExtentW);
|
FORWARD_TO_UNICOWS(GetTabbedTextExtentW);
|
||||||
|
36
apilibs/kexbases/Advapi32/OpenSCManager_stub.c
Executable file
36
apilibs/kexbases/Advapi32/OpenSCManager_stub.c
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* KernelEx
|
||||||
|
* Copyright (C) 2009, Xeno86
|
||||||
|
*
|
||||||
|
* This file is part of KernelEx source code.
|
||||||
|
*
|
||||||
|
* KernelEx 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; version 2 of the License.
|
||||||
|
*
|
||||||
|
* KernelEx 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 GNU Make; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
/* MAKE_EXPORT OpenSCManagerA_stub=OpenSCManagerA */
|
||||||
|
SC_HANDLE WINAPI OpenSCManagerA_stub(LPCSTR lpMachineName, LPCSTR lpDatabaseName,
|
||||||
|
DWORD dwDesiredAccess)
|
||||||
|
{
|
||||||
|
return (SC_HANDLE) 0xCAFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT OpenSCManagerW_stub=OpenSCManagerW */
|
||||||
|
SC_HANDLE WINAPI OpenSCManagerW_stub(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName,
|
||||||
|
DWORD dwDesiredAccess)
|
||||||
|
{
|
||||||
|
return (SC_HANDLE) 0xCAFE;
|
||||||
|
}
|
0
apilibs/kexbases/Advapi32/RegDisablePredefinedCache.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/RegDisablePredefinedCache.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/RegOpenCurrentUser.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/RegOpenCurrentUser.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/TraceMessage.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/TraceMessage.c
Normal file → Executable file
2
apilibs/kexbases/Advapi32/_advapi32_apilist.c
Normal file → Executable file
2
apilibs/kexbases/Advapi32/_advapi32_apilist.c
Normal file → Executable file
@ -89,6 +89,8 @@ static const apilib_named_api advapi32_named_apis[] =
|
|||||||
DECL_API("MakeSelfRelativeSD", MakeSelfRelativeSD_new),
|
DECL_API("MakeSelfRelativeSD", MakeSelfRelativeSD_new),
|
||||||
DECL_API("NotifyBootConfigStatus", NotifyBootConfigStatus_new),
|
DECL_API("NotifyBootConfigStatus", NotifyBootConfigStatus_new),
|
||||||
DECL_API("OpenProcessToken", OpenProcessToken_new),
|
DECL_API("OpenProcessToken", OpenProcessToken_new),
|
||||||
|
DECL_API("OpenSCManagerA", OpenSCManagerA_stub),
|
||||||
|
DECL_API("OpenSCManagerW", OpenSCManagerW_stub),
|
||||||
DECL_API("OpenThreadToken", OpenThreadToken_new),
|
DECL_API("OpenThreadToken", OpenThreadToken_new),
|
||||||
DECL_API("PrivilegeCheck", PrivilegeCheck_new),
|
DECL_API("PrivilegeCheck", PrivilegeCheck_new),
|
||||||
DECL_API("QueryServiceStatusEx", QueryServiceStatusEx_stub),
|
DECL_API("QueryServiceStatusEx", QueryServiceStatusEx_stub),
|
||||||
|
2
apilibs/kexbases/Advapi32/_advapi32_apilist.h
Normal file → Executable file
2
apilibs/kexbases/Advapi32/_advapi32_apilist.h
Normal file → Executable file
@ -29,6 +29,8 @@ BOOL init_advapi32();
|
|||||||
extern const apilib_api_table apitable_advapi32;
|
extern const apilib_api_table apitable_advapi32;
|
||||||
|
|
||||||
/*** AUTOGENERATED APILIST DECLARATIONS BEGIN ***/
|
/*** AUTOGENERATED APILIST DECLARATIONS BEGIN ***/
|
||||||
|
SC_HANDLE WINAPI OpenSCManagerA_stub(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess);
|
||||||
|
SC_HANDLE WINAPI OpenSCManagerW_stub(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess);
|
||||||
BOOL WINAPI RegDisablePredefinedCache_new();
|
BOOL WINAPI RegDisablePredefinedCache_new();
|
||||||
LONG WINAPI RegOpenCurrentUser_new(REGSAM access, PHKEY retkey);
|
LONG WINAPI RegOpenCurrentUser_new(REGSAM access, PHKEY retkey);
|
||||||
ULONG CDECL TraceMessage_new(ULONG64 LoggerHandle, ULONG MessageFlags, LPGUID MessageGuid, USHORT MessageNumber, ...);
|
ULONG CDECL TraceMessage_new(ULONG64 LoggerHandle, ULONG MessageFlags, LPGUID MessageGuid, USHORT MessageNumber, ...);
|
||||||
|
0
apilibs/kexbases/Advapi32/_advapi32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/_advapi32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/security.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/security.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/uniadvapi32.c
Normal file → Executable file
0
apilibs/kexbases/Advapi32/uniadvapi32.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/FontResourceExA.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/FontResourceExA.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/GetGlyphOutlineA_fix.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/GetGlyphOutlineA_fix.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/TextOut.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/TextOut.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_apilist.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_apilist.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_apilist.h
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_apilist.h
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/_gdi32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/unigdi32.c
Normal file → Executable file
0
apilibs/kexbases/Gdi32/unigdi32.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/CopyFileEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/CopyFileEx.c
Normal file → Executable file
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* KernelEx
|
|
||||||
* Copyright (C) 2008-2009, Xeno86
|
|
||||||
*
|
|
||||||
* This file is part of KernelEx source code.
|
|
||||||
*
|
|
||||||
* KernelEx 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; version 2 of the License.
|
|
||||||
*
|
|
||||||
* KernelEx 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 GNU Make; see the file COPYING. If not, write to
|
|
||||||
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
|
|
||||||
/* MAKE_EXPORT CreateFileA_fix=CreateFileA */
|
|
||||||
HANDLE WINAPI CreateFileA_fix(LPCSTR lpFileName, DWORD dwDesiredAccess,
|
|
||||||
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
|
||||||
DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
|
|
||||||
{
|
|
||||||
/* translate NT-specific access rights to generic ones */
|
|
||||||
if (dwDesiredAccess & ~0xf0010100)
|
|
||||||
{
|
|
||||||
DWORD oldaccess = dwDesiredAccess;
|
|
||||||
dwDesiredAccess &= 0xf0010100;
|
|
||||||
if (oldaccess & FILE_READ_DATA)
|
|
||||||
dwDesiredAccess |= GENERIC_READ;
|
|
||||||
if (oldaccess & FILE_WRITE_DATA)
|
|
||||||
dwDesiredAccess |= GENERIC_WRITE;
|
|
||||||
if (oldaccess & FILE_EXECUTE)
|
|
||||||
dwDesiredAccess |= GENERIC_EXECUTE;
|
|
||||||
}
|
|
||||||
// hTemplate has to be NULL on 9x
|
|
||||||
return CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
|
|
||||||
dwCreationDistribution, dwFlagsAndAttributes, NULL);
|
|
||||||
}
|
|
0
apilibs/kexbases/Kernel32/CreateThread_fix.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/CreateThread_fix.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/DeleteCriticalSection.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/DeleteCriticalSection.c
Normal file → Executable file
107
apilibs/kexbases/Kernel32/FileApis_fix.c
Executable file
107
apilibs/kexbases/Kernel32/FileApis_fix.c
Executable file
@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* KernelEx
|
||||||
|
* Copyright (C) 2008-2009, Xeno86
|
||||||
|
*
|
||||||
|
* This file is part of KernelEx source code.
|
||||||
|
*
|
||||||
|
* KernelEx 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; version 2 of the License.
|
||||||
|
*
|
||||||
|
* KernelEx 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 GNU Make; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
/* MAKE_EXPORT CreateFileA_fix=CreateFileA */
|
||||||
|
HANDLE WINAPI CreateFileA_fix(LPCSTR lpFileName, DWORD dwDesiredAccess,
|
||||||
|
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||||
|
DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
|
||||||
|
{
|
||||||
|
/* translate NT-specific access rights to generic ones */
|
||||||
|
if (dwDesiredAccess & ~0xf0010100)
|
||||||
|
{
|
||||||
|
DWORD oldaccess = dwDesiredAccess;
|
||||||
|
dwDesiredAccess &= 0xf0010100;
|
||||||
|
if (oldaccess & FILE_READ_DATA)
|
||||||
|
dwDesiredAccess |= GENERIC_READ;
|
||||||
|
if (oldaccess & FILE_WRITE_DATA)
|
||||||
|
dwDesiredAccess |= GENERIC_WRITE;
|
||||||
|
if (oldaccess & FILE_EXECUTE)
|
||||||
|
dwDesiredAccess |= GENERIC_EXECUTE;
|
||||||
|
}
|
||||||
|
// hTemplate has to be NULL on 9x
|
||||||
|
hTemplateFile = NULL;
|
||||||
|
// special case: overlapped I/O
|
||||||
|
if (dwFlagsAndAttributes & FILE_FLAG_OVERLAPPED)
|
||||||
|
{
|
||||||
|
DWORD lasterr = GetLastError();
|
||||||
|
HANDLE h;
|
||||||
|
h = CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
|
||||||
|
dwCreationDistribution, dwFlagsAndAttributes, hTemplateFile);
|
||||||
|
if (h != INVALID_HANDLE_VALUE)
|
||||||
|
return h;
|
||||||
|
SetLastError(lasterr);
|
||||||
|
dwFlagsAndAttributes &= ~FILE_FLAG_OVERLAPPED;
|
||||||
|
}
|
||||||
|
return CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
|
||||||
|
dwCreationDistribution, dwFlagsAndAttributes, hTemplateFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT ReadFile_fix=ReadFile */
|
||||||
|
BOOL WINAPI ReadFile_fix(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
|
||||||
|
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
|
||||||
|
{
|
||||||
|
DWORD lasterr = GetLastError();
|
||||||
|
|
||||||
|
if (ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead,
|
||||||
|
lpOverlapped))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (lpOverlapped && GetLastError() == ERROR_INVALID_PARAMETER)
|
||||||
|
{
|
||||||
|
LONG high = lpOverlapped->OffsetHigh;
|
||||||
|
DWORD nr;
|
||||||
|
SetLastError(lasterr);
|
||||||
|
if ((SetFilePointer(hFile, lpOverlapped->Offset, &high, FILE_BEGIN)
|
||||||
|
== (DWORD)-1 && GetLastError() != NO_ERROR) ||
|
||||||
|
(ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &nr, 0) && !nr))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_HANDLE_EOF);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
*lpNumberOfBytesRead = nr;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT WriteFile_fix=WriteFile */
|
||||||
|
BOOL WINAPI WriteFile_fix(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,
|
||||||
|
LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
|
||||||
|
{
|
||||||
|
DWORD lasterr = GetLastError();
|
||||||
|
|
||||||
|
if (WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite,
|
||||||
|
lpNumberOfBytesWritten, lpOverlapped))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (lpOverlapped && GetLastError() == ERROR_INVALID_PARAMETER)
|
||||||
|
{
|
||||||
|
LONG high = lpOverlapped->OffsetHigh;
|
||||||
|
SetLastError(lasterr);
|
||||||
|
if ((SetFilePointer(hFile, lpOverlapped->Offset, &high, FILE_BEGIN)
|
||||||
|
== (DWORD)-1 && GetLastError() != NO_ERROR))
|
||||||
|
return FALSE;
|
||||||
|
return WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, 0);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
47
apilibs/kexbases/Kernel32/GetConsoleWindow.c
Executable file
47
apilibs/kexbases/Kernel32/GetConsoleWindow.c
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* KernelEx
|
||||||
|
* Copyright (C) 2009, Xeno86
|
||||||
|
*
|
||||||
|
* This file is part of KernelEx source code.
|
||||||
|
*
|
||||||
|
* KernelEx 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; version 2 of the License.
|
||||||
|
*
|
||||||
|
* KernelEx 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 GNU Make; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
BOOL CALLBACK GetConsoleWindowEnum(HWND hwnd, LPARAM lparam)
|
||||||
|
{
|
||||||
|
char name[5];
|
||||||
|
if (GetClassName(hwnd, name, sizeof(name)) == (sizeof("tty")-1)
|
||||||
|
&& !strcmp(name, "tty"))
|
||||||
|
{
|
||||||
|
DWORD pid;
|
||||||
|
GetWindowThreadProcessId(hwnd, &pid);
|
||||||
|
if (pid == GetCurrentProcessId())
|
||||||
|
{
|
||||||
|
*(HWND*) lparam = hwnd;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT GetConsoleWindow_new=GetConsoleWindow */
|
||||||
|
HWND WINAPI GetConsoleWindow_new()
|
||||||
|
{
|
||||||
|
HWND window = NULL;
|
||||||
|
EnumWindows(GetConsoleWindowEnum, (LPARAM) &window);
|
||||||
|
return window;
|
||||||
|
}
|
0
apilibs/kexbases/Kernel32/GetFileSizeEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/GetFileSizeEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/GlobalMemoryStatusEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/GlobalMemoryStatusEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/HeapLocks.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/HeapLocks.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/InitializeCriticalSectionAndSpinCount.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/InitializeCriticalSectionAndSpinCount.c
Normal file → Executable file
102
apilibs/kexbases/Kernel32/IsProcessorFeaturePresent.c
Executable file
102
apilibs/kexbases/Kernel32/IsProcessorFeaturePresent.c
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009 Xeno86
|
||||||
|
* Copyright 1995,1997 Morten Welinder
|
||||||
|
* Copyright 1997-1998 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 <windows.h>
|
||||||
|
|
||||||
|
/* Processor feature flags. */
|
||||||
|
#define PF_FLOATING_POINT_PRECISION_ERRATA 0
|
||||||
|
#define PF_FLOATING_POINT_EMULATED 1
|
||||||
|
#define PF_COMPARE_EXCHANGE_DOUBLE 2
|
||||||
|
#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
|
||||||
|
#define PF_PPC_MOVEMEM_64BIT_OK 4
|
||||||
|
#define PF_ALPHA_BYTE_INSTRUCTIONS 5
|
||||||
|
#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
|
||||||
|
#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
|
||||||
|
#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
|
||||||
|
#define PF_PAE_ENABLED 9
|
||||||
|
#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
|
||||||
|
#define PF_SSE_DAZ_MODE_AVAILABLE 11
|
||||||
|
#define PF_NX_ENABLED 12
|
||||||
|
#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
|
||||||
|
#define PF_COMPARE_EXCHANGE128 14
|
||||||
|
#define PF_COMPARE64_EXCHANGE128 15
|
||||||
|
#define PF_CHANNELS_ENABLED 16
|
||||||
|
|
||||||
|
#define AUTH 0x68747541 /* "Auth" */
|
||||||
|
#define ENTI 0x69746e65 /* "enti" */
|
||||||
|
#define CAMD 0x444d4163 /* "cAMD" */
|
||||||
|
|
||||||
|
static BYTE PF[17] = {0,};
|
||||||
|
|
||||||
|
static void do_cpuid(unsigned int _eax, unsigned int *p)
|
||||||
|
{
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__asm__("cpuid"
|
||||||
|
: "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
|
||||||
|
: "a" (_eax));
|
||||||
|
#else
|
||||||
|
__asm {
|
||||||
|
mov eax, _eax
|
||||||
|
mov edi, p
|
||||||
|
cpuid
|
||||||
|
mov [edi], eax
|
||||||
|
mov [edi+4], ebx
|
||||||
|
mov [edi+8], ecx
|
||||||
|
mov [edi+12], edx
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void get_cpuinfo()
|
||||||
|
{
|
||||||
|
unsigned int regs[4], regs2[4];
|
||||||
|
|
||||||
|
do_cpuid(0x00000000, regs); /* get standard cpuid level and vendor name */
|
||||||
|
if (regs[0]>=0x00000001) /* Check for supported cpuid version */
|
||||||
|
{
|
||||||
|
do_cpuid(0x00000001, regs2); /* get cpu features */
|
||||||
|
PF[PF_FLOATING_POINT_EMULATED] = !(regs2[3] & 1);
|
||||||
|
PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = (regs2[3] & (1 << 4 )) >> 4;
|
||||||
|
PF[PF_COMPARE_EXCHANGE_DOUBLE] = (regs2[3] & (1 << 8 )) >> 8;
|
||||||
|
PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = (regs2[3] & (1 << 23)) >> 23;
|
||||||
|
PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = (regs2[3] & (1 << 25)) >> 25;
|
||||||
|
PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = (regs2[3] & (1 << 26)) >> 26;
|
||||||
|
PF[PF_SSE3_INSTRUCTIONS_AVAILABLE] = (regs2[2] & 1);
|
||||||
|
|
||||||
|
if (regs[1] == AUTH &&
|
||||||
|
regs[3] == ENTI &&
|
||||||
|
regs[2] == CAMD) {
|
||||||
|
do_cpuid(0x80000000, regs); /* get vendor cpuid level */
|
||||||
|
if (regs[0]>=0x80000001) {
|
||||||
|
do_cpuid(0x80000001, regs2); /* get vendor features */
|
||||||
|
PF[PF_3DNOW_INSTRUCTIONS_AVAILABLE] = (regs2[3] & (1 << 31)) >> 31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT IsProcessorFeaturePresent_new=IsProcessorFeaturePresent */
|
||||||
|
BOOL WINAPI IsProcessorFeaturePresent_new(DWORD feature)
|
||||||
|
{
|
||||||
|
if (feature < 17)
|
||||||
|
return PF[feature];
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
0
apilibs/kexbases/Kernel32/Jobs.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/Jobs.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/KEXVersion.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/KEXVersion.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/LockFileEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/LockFileEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/MapViewOfFile.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/MapViewOfFile.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/MoveFileExA.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/MoveFileExA.c
Normal file → Executable file
4
apilibs/kexbases/Kernel32/MoveFileWithProgressA.c
Normal file → Executable file
4
apilibs/kexbases/Kernel32/MoveFileWithProgressA.c
Normal file → Executable file
@ -20,9 +20,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <common.h>
|
||||||
|
#include "_kernel32_apilist.h"
|
||||||
|
|
||||||
/* MAKE_EXPORT MoveFileWithProgressA_new=MoveFileWithProgressA */
|
/* MAKE_EXPORT MoveFileWithProgressA_new=MoveFileWithProgressA */
|
||||||
BOOL WINAPI MoveFileWithProgressA_new(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags)
|
BOOL WINAPI MoveFileWithProgressA_new(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
return MoveFileExA(lpExistingFileName, lpNewFileName, dwFlags);
|
return MoveFileExA_new(lpExistingFileName, lpNewFileName, dwFlags);
|
||||||
}
|
}
|
||||||
|
0
apilibs/kexbases/Kernel32/OpenThread.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/OpenThread.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/SetFilePointerEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/SetFilePointerEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/ThreadPool.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/ThreadPool.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/TryEnterCriticalSection.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/TryEnterCriticalSection.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/VirtualAllocEx.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/VirtualAllocEx.c
Normal file → Executable file
9
apilibs/kexbases/Kernel32/_kernel32_apilist.c
Normal file → Executable file
9
apilibs/kexbases/Kernel32/_kernel32_apilist.c
Normal file → Executable file
@ -28,11 +28,13 @@ http://17slon.com/blogs/gabr/2007/02/four-ways-to-detect-vista.html
|
|||||||
#include "kexcoresdk.h"
|
#include "kexcoresdk.h"
|
||||||
#include "_kernel32_apilist.h"
|
#include "_kernel32_apilist.h"
|
||||||
|
|
||||||
|
void get_cpuinfo();
|
||||||
BOOL init_tryentercritsec();
|
BOOL init_tryentercritsec();
|
||||||
BOOL init_openthread();
|
BOOL init_openthread();
|
||||||
|
|
||||||
BOOL init_kernel32()
|
BOOL init_kernel32()
|
||||||
{
|
{
|
||||||
|
get_cpuinfo();
|
||||||
return init_tryentercritsec() && init_openthread();
|
return init_tryentercritsec() && init_openthread();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +75,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("FindResourceExW", FindResourceExW_new),
|
DECL_API("FindResourceExW", FindResourceExW_new),
|
||||||
DECL_API("FindResourceW", FindResourceW_new),
|
DECL_API("FindResourceW", FindResourceW_new),
|
||||||
DECL_API("FreeEnvironmentStringsW", FreeEnvironmentStringsW_new),
|
DECL_API("FreeEnvironmentStringsW", FreeEnvironmentStringsW_new),
|
||||||
DECL_API("GetConsoleWindow", GetConsoleWindow_stub),
|
DECL_API("GetConsoleWindow", GetConsoleWindow_new),
|
||||||
DECL_API("GetCurrentDirectoryW", GetCurrentDirectoryW_new),
|
DECL_API("GetCurrentDirectoryW", GetCurrentDirectoryW_new),
|
||||||
DECL_API("GetDefaultCommConfigW", GetDefaultCommConfigW_new),
|
DECL_API("GetDefaultCommConfigW", GetDefaultCommConfigW_new),
|
||||||
DECL_API("GetDiskFreeSpaceExW", GetDiskFreeSpaceExW_new),
|
DECL_API("GetDiskFreeSpaceExW", GetDiskFreeSpaceExW_new),
|
||||||
@ -103,6 +105,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("GetVersion", GetVersion_WIN2K3),
|
DECL_API("GetVersion", GetVersion_WIN2K3),
|
||||||
DECL_API("GetVersion", GetVersion_VISTA),
|
DECL_API("GetVersion", GetVersion_VISTA),
|
||||||
DECL_API("GetVersion", GetVersion_WIN2K8),
|
DECL_API("GetVersion", GetVersion_WIN2K8),
|
||||||
|
DECL_API("GetVersionExA", GetVersionExA_ORIG),
|
||||||
DECL_API("GetVersionExA", GetVersionExA_WIN95),
|
DECL_API("GetVersionExA", GetVersionExA_WIN95),
|
||||||
DECL_API("GetVersionExA", GetVersionExA_WIN98),
|
DECL_API("GetVersionExA", GetVersionExA_WIN98),
|
||||||
DECL_API("GetVersionExA", GetVersionExA_WINME),
|
DECL_API("GetVersionExA", GetVersionExA_WINME),
|
||||||
@ -112,6 +115,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("GetVersionExA", GetVersionExA_WIN2K3),
|
DECL_API("GetVersionExA", GetVersionExA_WIN2K3),
|
||||||
DECL_API("GetVersionExA", GetVersionExA_VISTA),
|
DECL_API("GetVersionExA", GetVersionExA_VISTA),
|
||||||
DECL_API("GetVersionExA", GetVersionExA_WIN2K8),
|
DECL_API("GetVersionExA", GetVersionExA_WIN2K8),
|
||||||
|
DECL_API("GetVersionExW", GetVersionExW_ORIG),
|
||||||
DECL_API("GetVersionExW", GetVersionExW_WIN95),
|
DECL_API("GetVersionExW", GetVersionExW_WIN95),
|
||||||
DECL_API("GetVersionExW", GetVersionExW_WIN98),
|
DECL_API("GetVersionExW", GetVersionExW_WIN98),
|
||||||
DECL_API("GetVersionExW", GetVersionExW_WINME),
|
DECL_API("GetVersionExW", GetVersionExW_WINME),
|
||||||
@ -130,6 +134,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("HeapUnlock", HeapUnlock_new),
|
DECL_API("HeapUnlock", HeapUnlock_new),
|
||||||
DECL_API("InitializeCriticalSectionAndSpinCount", InitializeCriticalSectionAndSpinCount_new),
|
DECL_API("InitializeCriticalSectionAndSpinCount", InitializeCriticalSectionAndSpinCount_new),
|
||||||
DECL_API("IsProcessInJob", IsProcessInJob_new),
|
DECL_API("IsProcessInJob", IsProcessInJob_new),
|
||||||
|
DECL_API("IsProcessorFeaturePresent", IsProcessorFeaturePresent_new),
|
||||||
DECL_API("IsValidLanguageGroup", IsValidLanguageGroup_stub),
|
DECL_API("IsValidLanguageGroup", IsValidLanguageGroup_stub),
|
||||||
DECL_API("KEXVersion", KEXVersion),
|
DECL_API("KEXVersion", KEXVersion),
|
||||||
DECL_API("LockFileEx", LockFileEx_new),
|
DECL_API("LockFileEx", LockFileEx_new),
|
||||||
@ -149,6 +154,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("Process32NextW", Process32NextW_new),
|
DECL_API("Process32NextW", Process32NextW_new),
|
||||||
DECL_API("QueryInformationJobObject", QueryInformationJobObject_new),
|
DECL_API("QueryInformationJobObject", QueryInformationJobObject_new),
|
||||||
DECL_API("QueueUserWorkItem", QueueUserWorkItem_stub),
|
DECL_API("QueueUserWorkItem", QueueUserWorkItem_stub),
|
||||||
|
DECL_API("ReadFile", ReadFile_fix),
|
||||||
DECL_API("RegisterWaitForSingleObject", RegisterWaitForSingleObject_new),
|
DECL_API("RegisterWaitForSingleObject", RegisterWaitForSingleObject_new),
|
||||||
DECL_API("RegisterWaitForSingleObjectEx", RegisterWaitForSingleObjectEx_new),
|
DECL_API("RegisterWaitForSingleObjectEx", RegisterWaitForSingleObjectEx_new),
|
||||||
DECL_API("RemoveDirectoryW", RemoveDirectoryW_new),
|
DECL_API("RemoveDirectoryW", RemoveDirectoryW_new),
|
||||||
@ -179,6 +185,7 @@ static const apilib_named_api kernel32_named_apis[] =
|
|||||||
DECL_API("VerifyVersionInfoW", VerifyVersionInfoW_WIN2K8),
|
DECL_API("VerifyVersionInfoW", VerifyVersionInfoW_WIN2K8),
|
||||||
DECL_API("VirtualAllocEx", VirtualAllocEx_new),
|
DECL_API("VirtualAllocEx", VirtualAllocEx_new),
|
||||||
DECL_API("VirtualFreeEx", VirtualFreeEx_new),
|
DECL_API("VirtualFreeEx", VirtualFreeEx_new),
|
||||||
|
DECL_API("WriteFile", WriteFile_fix),
|
||||||
DECL_API("lstrcpynW", lstrcpynW_new),
|
DECL_API("lstrcpynW", lstrcpynW_new),
|
||||||
/*** AUTOGENERATED APILIST NAMED EXPORTS END ***/
|
/*** AUTOGENERATED APILIST NAMED EXPORTS END ***/
|
||||||
};
|
};
|
||||||
|
9
apilibs/kexbases/Kernel32/_kernel32_apilist.h
Normal file → Executable file
9
apilibs/kexbases/Kernel32/_kernel32_apilist.h
Normal file → Executable file
@ -31,14 +31,18 @@ extern const apilib_api_table apitable_kernel32;
|
|||||||
|
|
||||||
/*** AUTOGENERATED APILIST DECLARATIONS BEGIN ***/
|
/*** AUTOGENERATED APILIST DECLARATIONS BEGIN ***/
|
||||||
BOOL WINAPI CopyFileExA_new(LPCSTR lpExistingFileNameA, LPCSTR lpNewFileNameA, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
|
BOOL WINAPI CopyFileExA_new(LPCSTR lpExistingFileNameA, LPCSTR lpNewFileNameA, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
|
||||||
HANDLE WINAPI CreateFileA_fix(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
|
||||||
HANDLE WINAPI CreateThread_fix(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
|
HANDLE WINAPI CreateThread_fix(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
|
||||||
void WINAPI DeleteCriticalSection_new(PCRITICAL_SECTION lpCriticalSection);
|
void WINAPI DeleteCriticalSection_new(PCRITICAL_SECTION lpCriticalSection);
|
||||||
|
HANDLE WINAPI CreateFileA_fix(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
||||||
|
BOOL WINAPI ReadFile_fix(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
|
||||||
|
BOOL WINAPI WriteFile_fix(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
|
||||||
|
HWND WINAPI GetConsoleWindow_new();
|
||||||
BOOL WINAPI GetFileSizeEx_new(HANDLE hFile, PLARGE_INTEGER lpFileSize);
|
BOOL WINAPI GetFileSizeEx_new(HANDLE hFile, PLARGE_INTEGER lpFileSize);
|
||||||
BOOL WINAPI GlobalMemoryStatusEx_new(LPMEMORYSTATUSEX lpmemex);
|
BOOL WINAPI GlobalMemoryStatusEx_new(LPMEMORYSTATUSEX lpmemex);
|
||||||
BOOL WINAPI HeapLock_new(HANDLE hHeap);
|
BOOL WINAPI HeapLock_new(HANDLE hHeap);
|
||||||
BOOL WINAPI HeapUnlock_new(HANDLE hHeap);
|
BOOL WINAPI HeapUnlock_new(HANDLE hHeap);
|
||||||
BOOL WINAPI InitializeCriticalSectionAndSpinCount_new(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
|
BOOL WINAPI InitializeCriticalSectionAndSpinCount_new(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
|
||||||
|
BOOL WINAPI IsProcessorFeaturePresent_new(DWORD feature);
|
||||||
HANDLE WINAPI CreateJobObjectA_new(LPSECURITY_ATTRIBUTES sa, LPCSTR name);
|
HANDLE WINAPI CreateJobObjectA_new(LPSECURITY_ATTRIBUTES sa, LPCSTR name);
|
||||||
HANDLE WINAPI CreateJobObjectW_new(LPSECURITY_ATTRIBUTES sa, LPCWSTR name);
|
HANDLE WINAPI CreateJobObjectW_new(LPSECURITY_ATTRIBUTES sa, LPCWSTR name);
|
||||||
BOOL WINAPI TerminateJobObject_new(HANDLE job, UINT exit_code);
|
BOOL WINAPI TerminateJobObject_new(HANDLE job, UINT exit_code);
|
||||||
@ -64,7 +68,6 @@ LPVOID WINAPI VirtualAllocEx_new(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize
|
|||||||
BOOL WINAPI VirtualFreeEx_new(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType);
|
BOOL WINAPI VirtualFreeEx_new(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType);
|
||||||
STUB CreateHardLinkA_stub;
|
STUB CreateHardLinkA_stub;
|
||||||
STUB CreateHardLinkW_stub;
|
STUB CreateHardLinkW_stub;
|
||||||
STUB GetConsoleWindow_stub;
|
|
||||||
STUB IsValidLanguageGroup_stub;
|
STUB IsValidLanguageGroup_stub;
|
||||||
STUB QueueUserWorkItem_stub;
|
STUB QueueUserWorkItem_stub;
|
||||||
STUB ReplaceFileA_stub;
|
STUB ReplaceFileA_stub;
|
||||||
@ -132,6 +135,8 @@ DWORD WINAPI GetVersion_WINXP(void);
|
|||||||
DWORD WINAPI GetVersion_WIN2K3(void);
|
DWORD WINAPI GetVersion_WIN2K3(void);
|
||||||
DWORD WINAPI GetVersion_VISTA(void);
|
DWORD WINAPI GetVersion_VISTA(void);
|
||||||
DWORD WINAPI GetVersion_WIN2K8(void);
|
DWORD WINAPI GetVersion_WIN2K8(void);
|
||||||
|
BOOL WINAPI GetVersionExA_ORIG(LPOSVERSIONINFOA lpVersionInfo);
|
||||||
|
BOOL WINAPI GetVersionExW_ORIG(LPOSVERSIONINFOW lpVersionInfo);
|
||||||
BOOL WINAPI GetVersionExA_WIN95(LPOSVERSIONINFOA lpVersionInfo);
|
BOOL WINAPI GetVersionExA_WIN95(LPOSVERSIONINFOA lpVersionInfo);
|
||||||
BOOL WINAPI GetVersionExW_WIN95(LPOSVERSIONINFOW lpVersionInfo);
|
BOOL WINAPI GetVersionExW_WIN95(LPOSVERSIONINFOW lpVersionInfo);
|
||||||
BOOL WINAPI GetVersionExA_WIN98(LPOSVERSIONINFOA lpVersionInfo);
|
BOOL WINAPI GetVersionExA_WIN98(LPOSVERSIONINFOA lpVersionInfo);
|
||||||
|
1
apilibs/kexbases/Kernel32/_kernel32_stubs.c
Normal file → Executable file
1
apilibs/kexbases/Kernel32/_kernel32_stubs.c
Normal file → Executable file
@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
UNIMPL_FUNC(CreateHardLinkA, 3);
|
UNIMPL_FUNC(CreateHardLinkA, 3);
|
||||||
UNIMPL_FUNC(CreateHardLinkW, 3);
|
UNIMPL_FUNC(CreateHardLinkW, 3);
|
||||||
UNIMPL_FUNC(GetConsoleWindow, 0);
|
|
||||||
UNIMPL_FUNC(IsValidLanguageGroup, 2);
|
UNIMPL_FUNC(IsValidLanguageGroup, 2);
|
||||||
UNIMPL_FUNC(QueueUserWorkItem, 3);
|
UNIMPL_FUNC(QueueUserWorkItem, 3);
|
||||||
UNIMPL_FUNC(ReplaceFileA, 6);
|
UNIMPL_FUNC(ReplaceFileA, 6);
|
||||||
|
0
apilibs/kexbases/Kernel32/uilang.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/uilang.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/unikernel32.c
Normal file → Executable file
0
apilibs/kexbases/Kernel32/unikernel32.c
Normal file → Executable file
70
apilibs/kexbases/Kernel32/version.c
Normal file → Executable file
70
apilibs/kexbases/Kernel32/version.c
Normal file → Executable file
@ -109,6 +109,64 @@ static const OSVERSIONINFOEXA_PRIV VersionData[NB_WINDOWS_VERSIONS] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static BOOL original_GetVersionEx(void* buf, BOOL unicode)
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
OSVERSIONINFOA* ver = (OSVERSIONINFOA*) buf;
|
||||||
|
DWORD structsize = ver->dwOSVersionInfoSize;
|
||||||
|
|
||||||
|
if (!unicode)
|
||||||
|
{
|
||||||
|
if (structsize != sizeof(OSVERSIONINFOA) && structsize != sizeof(OSVERSIONINFOEXA))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (structsize != sizeof(OSVERSIONINFOW) && structsize != sizeof(OSVERSIONINFOEXW))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ver->dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
|
||||||
|
ret = GetVersionExA(ver);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
char csdVer[128];
|
||||||
|
OSVERSIONINFOEXA* verexA = (OSVERSIONINFOEXA*) ver;
|
||||||
|
OSVERSIONINFOEXW* verexW = (OSVERSIONINFOEXW*) ver;
|
||||||
|
|
||||||
|
switch (structsize)
|
||||||
|
{
|
||||||
|
case sizeof(OSVERSIONINFOEXA):
|
||||||
|
verexA->wServicePackMajor = 0;
|
||||||
|
verexA->wServicePackMinor = 0;
|
||||||
|
verexA->wSuiteMask = 0;
|
||||||
|
verexA->wProductType = 0;
|
||||||
|
verexA->wReserved = 0;
|
||||||
|
case sizeof(OSVERSIONINFOA):
|
||||||
|
break;
|
||||||
|
case sizeof(OSVERSIONINFOEXW):
|
||||||
|
verexW->wServicePackMajor = 0;
|
||||||
|
verexW->wServicePackMinor = 0;
|
||||||
|
verexW->wSuiteMask = 0;
|
||||||
|
verexW->wProductType = 0;
|
||||||
|
verexW->wReserved = 0;
|
||||||
|
case sizeof(OSVERSIONINFOW):
|
||||||
|
strcpy(csdVer, ver->szCSDVersion);
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, csdVer, -1, verexW->szCSDVersion,
|
||||||
|
sizeof(csdVer));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ver->dwOSVersionInfoSize = structsize;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static DWORD common_GetVersion(WINDOWS_VERSION version)
|
static DWORD common_GetVersion(WINDOWS_VERSION version)
|
||||||
{
|
{
|
||||||
const OSVERSIONINFOEXA_PRIV* osv = &VersionData[version];
|
const OSVERSIONINFOEXA_PRIV* osv = &VersionData[version];
|
||||||
@ -404,6 +462,18 @@ DWORD WINAPI GetVersion_WIN2K8(void)
|
|||||||
return common_GetVersion(WIN2K8);
|
return common_GetVersion(WIN2K8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT GetVersionExA_ORIG=GetVersionExA */
|
||||||
|
BOOL WINAPI GetVersionExA_ORIG(LPOSVERSIONINFOA lpVersionInfo)
|
||||||
|
{
|
||||||
|
return original_GetVersionEx(lpVersionInfo, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAKE_EXPORT GetVersionExW_ORIG=GetVersionExW */
|
||||||
|
BOOL WINAPI GetVersionExW_ORIG(LPOSVERSIONINFOW lpVersionInfo)
|
||||||
|
{
|
||||||
|
return original_GetVersionEx(lpVersionInfo, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/* MAKE_EXPORT GetVersionExA_WIN95=GetVersionExA */
|
/* MAKE_EXPORT GetVersionExA_WIN95=GetVersionExA */
|
||||||
BOOL WINAPI GetVersionExA_WIN95(LPOSVERSIONINFOA lpVersionInfo)
|
BOOL WINAPI GetVersionExA_WIN95(LPOSVERSIONINFOA lpVersionInfo)
|
||||||
{
|
{
|
||||||
|
0
apilibs/kexbases/User32/CallWindowProcA_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/CallWindowProcA_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/DisableProcessWindowsGhosting.c
Normal file → Executable file
0
apilibs/kexbases/User32/DisableProcessWindowsGhosting.c
Normal file → Executable file
0
apilibs/kexbases/User32/EnableWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/EnableWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/ForegroundWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/ForegroundWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/GetAncestor.c
Normal file → Executable file
0
apilibs/kexbases/User32/GetAncestor.c
Normal file → Executable file
0
apilibs/kexbases/User32/GetMouseMovePointsEx.c
Normal file → Executable file
0
apilibs/kexbases/User32/GetMouseMovePointsEx.c
Normal file → Executable file
0
apilibs/kexbases/User32/IsHungAppWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/IsHungAppWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/LockWorkStation.c
Normal file → Executable file
0
apilibs/kexbases/User32/LockWorkStation.c
Normal file → Executable file
0
apilibs/kexbases/User32/MapVirtualKey_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/MapVirtualKey_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/SendMessage_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/SendMessage_fix.c
Normal file → Executable file
0
apilibs/kexbases/User32/UberUSER.c
Normal file → Executable file
0
apilibs/kexbases/User32/UberUSER.c
Normal file → Executable file
0
apilibs/kexbases/User32/UpdateLayeredWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/UpdateLayeredWindow.c
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_apilist.c
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_apilist.c
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_apilist.h
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_apilist.h
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/User32/_user32_stubs.c
Normal file → Executable file
0
apilibs/kexbases/User32/uniuser32.c
Normal file → Executable file
0
apilibs/kexbases/User32/uniuser32.c
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user