Merge pull request #11 from AleBello7276/main

First batch of many kernelx export functions + Should Fix Check build error
This commit is contained in:
Tyler Jaacks
2024-09-04 18:11:21 -05:00
committed by GitHub
5 changed files with 551 additions and 2 deletions

View File

@@ -2,7 +2,85 @@ LIBRARY kernelx
EXPORTS
AcquireSRWLockExclusive = AcquireSRWLockExclusive_X @1
AcquireSRWLockShared = AcquireSRWLockShared_X @2
CloseHandle = CloseHandle_X @14
CreateDirectoryW = CreateDirectoryW_X @34
CreateEventExW = CreateEventExW_X @37
CreateEventW = CreateEventW_X @38
CreateFileW = CreateFileW_X @44
CreateThread = CreateThread_X @60
DebugBreak = DebugBreak_X @71
DecodePointer = NTDLL.RtlDecodePointer @72
DeleteCriticalSection = NTDLL.RtlDeleteCriticalSection@74
DeleteFileW = DeleteFileW_X @77
EventRegister = NTDLL.EtwEventRegister @95
EventUnregister = NTDLL.EtwEventUnregister @97
EnterCriticalSection = EnterCriticalSection_X @87
ExitProcess = ExitProcess_X @102
FileTimeToSystemTime = FileTimeToSystemTime_X @107
FindClose = FindClose_X @109
FindFirstFileW = FindFirstFileW_X @113
FindNextFileW = FindNextFileW_X @117
GetConsoleType = GetConsoleType_X @140
GetCurrentProcess = GetCurrentProcess_X @144
GetCurrentProcessId = GetCurrentProcessId_X @145
GetCurrentThread = GetCurrentThread_X @148
GetCurrentThreadId = GetCurrentThreadId_X @149
GetExitCodeThread = GetExitCodeThread_X @163
GetFileAttributesExW = GetFileAttributesExW_X @166
GetFileAttributesW = GetFileAttributesW_X @167
GetFileSizeEx = GetFileSizeEx_X @171
GetLastError = GetLastError_X @178
GetLocalTime = GetLocalTime_X @179
GetModuleHandleW = GetModuleHandleW_X @189
GetProcessHeap = GetProcessHeap_X @199
GetProcessId = GetProcessId_X @201
GetStartupInfoW = GetStartupInfoW_X @208
GetSystemTime = GetSystemTime_X @216
GetSystemTimeAsFileTime = GetSystemTimeAsFileTime_X @218
GetTickCount = GetTickCount_X @231
GetUserDefaultLocaleName = GetUserDefaultLocaleName_X @242
GetUserGeoID = GetUserGeoID_X @243
InitializeConditionVariable = NTDDLL.RtlInitializeConditionVariable @269
InitializeCriticalSection = NTDLL.RtlInitializeCriticalSection @271
InitializeCriticalSectionAndSpinCount = InitializeCriticalSectionAndSpinCount_X @272
InitializeSListHead = NTDLL.RtlInitializeSListHead @275
InitializeSRWLock = NTDLL.InitializeSRWLock @276
IsDebuggerPresent = IsDebuggerPresent_X @283
IsProcessorFeaturePresent = IsProcessorFeaturePresent_X @284
LeaveCriticalSection = NTDLL.RtlLeaveCriticalSection @293
MultiByteToWideChar = MultiByteToWideChar_X @313
OutputDebugStringW = OutputDebugStringW_X @328
QueryPerformanceCounter = QueryPerformanceCounter_X @333
QueryPerformanceFrequency = QueryPerformanceFrequency_X @334
RaiseException = RaiseException_X @339
ReadFile = ReadFile_X @344
ReleaseSRWLockExclusive = NTDLL.RtlReleaseSRWLockExclusive @366
ResetEvent = ResetEvent_X @374
ResumeThread = ResumeThread_X @377
RtlCaptureContext = RtlCaptureContext_X @378
RtlLookupFunctionEntry = RtlLookupFunctionEntry @380
RtlVirtualUnwind = NTDLL.RtlVirtualUnwind @386
SetFilePointer = SetFilePointer_X @404
SetLastError = NTDLL.RtlSetLastWin32Error @409
SetThreadAffinityMask = SetThreadAffinityMask_X @418
SetThreadPriority = SetThreadPriority_X @424
SetUnhandledExceptionFilter = SetUnhandledExceptionFilter_X @433
Sleep = Sleep_X @440
SleepConditionVariableCS = API-MS-WIN-CORE-SYNCH-L1-2-0.SleepConditionVariableCS @441
SystemTimeToFileTime = SystemTimeToFileTime_X @449
TerminateProcess = TerminateProcess_X @451
TlsAlloc = TlsAlloc_X @454
TlsGetValue = TlsGetValue_X @456
TlsSetValue = TlsSetValue_X @457
TryEnterCriticalSection = NTDLL.RtlTryEnterCriticalSection @464
UnhandledExceptionFilter = UnhandledExceptionFilter_X @467
VirtualAlloc = VirtualAlloc_X @474
VirtualFree = VirtualFree_X @476
WaitForMultipleObjects = WaitForMultipleObjects_X @482
WaitForSingleObject = WaitForSingleObject_X @484
WaitForSingleObjectEx = WaitForSingleObjectEx_X @485
WakeAllConditionVariable = NTDLL.RtlWakeAllConditionVariable @492
WriteFile = WriteFile_X @500
XMemAlloc = XMemAlloc_X @501
XMemAllocDefault = XMemAllocDefault_X @505
XMemAllocDefault = XMemAllocDefault_X @505
XMemFreeDefault = XMemFreeDefault_X @508

View File

@@ -30,6 +30,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD forwardReason, LPVOID lpvReserved
DestinationString->Length = 0LL;
DestinationString->Buffer = 0LL;
}
//Probably have to change this to SetUnhandledExceptionFilter
RtlSetUnhandledExceptionFilter(UnhandledExceptionFilter);
}
else

View File

@@ -36,11 +36,351 @@ PVOID XMemAllocDefault_X(ULONG_PTR a1, UINT64 a2)
return nullptr;
}
//TODO
PVOID XMemAlloc_X(SIZE_T dwSize, ULONGLONG dwAttributes)
{
return XMemAllocDefault_X(dwSize, dwAttributes);
}
//TODO
BOOL XMemFreeDefault_X(PVOID P, unsigned __int64 a2)
{
//STUB
return 0;
}
LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter_X(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
{
return SetUnhandledExceptionFilter(lpTopLevelExceptionFilter);
}
BOOL TerminateProcess_X(HANDLE hProcess, UINT uExitCode)
{
return TerminateProcess(hProcess, uExitCode);
}
HANDLE GetCurrentProcess_X()
{
return GetCurrentProcess();
}
LONG UnhandledExceptionFilter_X(_EXCEPTION_POINTERS* ExceptionInfo)
{
return UnhandledExceptionFilter(ExceptionInfo);
}
DWORD GetTickCount_X()
{
return GetTickCount();
}
void RtlCaptureContext_X(PCONTEXT ContextRecord)
{
return RtlCaptureContext(ContextRecord);
}
PRUNTIME_FUNCTION RtlLookupFunctionEntry_X(DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable)
{
return RtlLookupFunctionEntry(ControlPc, ImageBase, HistoryTable);
}
DWORD GetProcessId_X(HANDLE Process)
{
return GetProcessId(Process);
}
void GetSystemTimeAsFileTime_X(LPFILETIME lpSystemTimeAsFileTime)
{
return GetSystemTimeAsFileTime(lpSystemTimeAsFileTime);
}
DWORD WaitForSingleObjectEx_X(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable)
{
return WaitForSingleObjectEx(hHandle, dwMilliseconds, bAlertable);
}
void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo)
{
GetStartupInfoW(lpStartupInfo);
}
HMODULE GetModuleHandleW_X(LPCWSTR lpModuleName)
{
return GetModuleHandleW(lpModuleName);
}
void GetLocalTime_X(LPSYSTEMTIME lpSystemTime)
{
GetLocalTime(lpSystemTime);
}
DWORD GetLastError_X()
{
return GetLastError();
}
BOOL GetFileSizeEx_X(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
return GetFileSizeEx(hFile, lpFileSize);
}
DWORD GetFileAttributesW_X(LPCWSTR lpFileName)
{
return GetFileAttributesW(lpFileName);
}
BOOL GetFileAttributesExW_X(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
{
return GetFileAttributesExW(lpFileName, fInfoLevelId, lpFileInformation);
}
BOOL GetExitCodeThread_X(HANDLE hThread, LPDWORD lpExitCode)
{
return GetExitCodeThread(hThread, lpExitCode);
}
HANDLE GetCurrentThread_X()
{
return GetCurrentThread();
}
DWORD GetCurrentThreadId_X()
{
return GetCurrentThreadId();
}
DWORD GetCurrentProcessId_X()
{
return GetCurrentProcessId();
}
BOOL FindNextFileW_X(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData)
{
return FindNextFileW(hFindFile, lpFindFileData);
}
HANDLE FindFirstFileW_X(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData)
{
return FindFirstFileW(lpFileName, lpFindFileData);
}
BOOL FindClose_X(HANDLE hFindFile)
{
return FindClose(hFindFile);
}
BOOL FileTimeToSystemTime_X(FILETIME* lpFileTime, LPSYSTEMTIME lpSystemTime)
{
return FileTimeToSystemTime(lpFileTime, lpSystemTime);
}
void ExitProcess_X(UINT uExitCode)
{
ExitProcess(uExitCode);
}
BOOL DeleteFileW_X(LPCWSTR lpFileName)
{
return DeleteFileW(lpFileName);
}
void DebugBreak_X()
{
return DebugBreak();
}
HANDLE CreateThread_X(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId)
{
return CreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId);
}
HANDLE CreateFileW_X(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{
return CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
}
HANDLE CreateEventW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName)
{
return CreateEventW(lpEventAttributes, bManualReset, bInitialState, lpName);
}
HANDLE CreateEventExW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess)
{
return CreateEventExW(lpEventAttributes, lpName, dwFlags, dwDesiredAccess);
}
BOOL CreateDirectoryW_X(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
{
return CreateDirectoryW(lpPathName, lpSecurityAttributes);
}
BOOL CloseHandle_X(HANDLE hObject)
{
return CloseHandle(hObject);
}
BOOL VirtualFree_X(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType)
{
//Get rid of Warnings i guess TODO
//if (dwFreeType == 0) return;
return VirtualFree(lpAddress, dwSize, dwFreeType);
}
BOOL TlsSetValue_X(DWORD dwTlsIndex, LPVOID lpTlsValue)
{
return TlsSetValue(dwTlsIndex, lpTlsValue);
}
LPVOID VirtualAlloc_X(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
{
return VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect);
}
BOOL WriteFile_X(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
{
return WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped);
}
DWORD WaitForSingleObject_X(HANDLE hHandle, DWORD dwMilliseconds)
{
return WaitForSingleObject(hHandle, dwMilliseconds);
}
DWORD WaitForMultipleObjects_X(DWORD nCount, HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds)
{
return WaitForMultipleObjects(nCount, lpHandles, bWaitAll, dwMilliseconds);
}
LPVOID TlsGetValue_X(DWORD dwTlsIndex)
{
return TlsGetValue(dwTlsIndex);
}
DWORD TlsAlloc_X()
{
return TlsAlloc();
}
BOOL SystemTimeToFileTime_X(SYSTEMTIME* lpSystemTime, LPFILETIME lpFileTime)
{
return SystemTimeToFileTime(lpSystemTime, lpFileTime);
}
void Sleep_X(DWORD dwMilliseconds)
{
return Sleep(dwMilliseconds);
}
BOOL SetThreadPriority_X(HANDLE hThread, int nPriority)
{
return SetThreadPriority(hThread, nPriority);
}
DWORD_PTR SetThreadAffinityMask_X(HANDLE hThread, DWORD_PTR dwThreadAffinityMask)
{
return SetThreadAffinityMask(hThread, dwThreadAffinityMask);
}
DWORD SetFilePointer_X(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
{
return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod);
}
DWORD ResumeThread_X(HANDLE hThread)
{
return ResumeThread(hThread);
}
BOOL ResetEvent_X(HANDLE hEvent)
{
return ResetEvent(hEvent);
}
BOOL ReadFile_X(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
{
return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
}
void RaiseException_X(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, ULONG_PTR* lpArguments)
{
return RaiseException(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, lpArguments);
}
BOOL QueryPerformanceFrequency_X(LARGE_INTEGER* lpFrequency)
{
return QueryPerformanceFrequency(lpFrequency);
}
BOOL QueryPerformanceCounter_X(LARGE_INTEGER* lpPerformanceCount)
{
return QueryPerformanceCounter(lpPerformanceCount);
}
void OutputDebugStringW_X(LPCWSTR lpOutputString)
{
OutputDebugStringW(lpOutputString);
}
int MultiByteToWideChar_X(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar)
{
return MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar);
}
BOOL IsProcessorFeaturePresent_X(DWORD ProcessorFeature)
{
return IsProcessorFeaturePresent(ProcessorFeature);
}
BOOL IsDebuggerPresent_X()
{
return IsDebuggerPresent();
}
BOOL InitializeCriticalSectionAndSpinCount_X(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount)
{
return InitializeCriticalSectionAndSpinCount(lpCriticalSection, dwSpinCount);
}
GEOID GetUserGeoID_X(GEOCLASS GeoClass)
{
return GetUserGeoID(GeoClass);
}
int GetUserDefaultLocaleName_X(LPWSTR lpLocaleName, int cchLocaleName)
{
return GetUserDefaultLocaleName(lpLocaleName, cchLocaleName);
}
void GetSystemTime_X(LPSYSTEMTIME lpSystemTime)
{
GetSystemTime(lpSystemTime);
}
__int64 GetConsoleType_X()
{
//STUB
return 1;
/*unsigned int v5; // ecx
_RAX = 1073741837LL;
__asm { cpuid }
v5 = WORD1(_RCX);
if (v5 >= 0x32)
{
switch (v5)
{
case '@':
return 2LL;
case 'P':
return 3LL;
case 'X':
return 4LL;
}
}
return 1LL;*/
}
// !!!!!

View File

@@ -16,6 +16,136 @@ extern "C" PVOID XMemAllocDefault_X(ULONG_PTR a1, UINT64 a2);
extern "C" PVOID XMemAlloc_X(SIZE_T dwSize, ULONGLONG dwAttributes);
extern "C" LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter_X(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
extern "C" BOOL TerminateProcess_X(HANDLE hProcess, UINT uExitCode);
extern "C" HANDLE GetCurrentProcess_X();
extern "C" LONG UnhandledExceptionFilter_X(_EXCEPTION_POINTERS* ExceptionInfo);
extern "C" DWORD GetTickCount_X();
extern "C" void RtlCaptureContext_X(PCONTEXT ContextRecord);
extern "C" PRUNTIME_FUNCTION RtlLookupFunctionEntry_X(DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
extern "C" DWORD GetProcessId_X(HANDLE Process);
extern "C" void GetSystemTimeAsFileTime_X(LPFILETIME lpSystemTimeAsFileTime);
extern "C" DWORD WaitForSingleObjectEx_X(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable);
extern "C" void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo);
extern "C" BOOL VirtualFree_X(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType);
extern "C" BOOL TlsSetValue_X(DWORD dwTlsIndex, LPVOID lpTlsValue);
extern "C" LPVOID VirtualAlloc_X(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
extern "C" BOOL XMemFreeDefault_X(PVOID P, unsigned __int64 a2);
extern "C" BOOL WriteFile_X(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
extern "C" DWORD WaitForSingleObject_X(HANDLE hHandle, DWORD dwMilliseconds);
extern "C" DWORD WaitForMultipleObjects_X(DWORD nCount, HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds);
extern "C" LPVOID TlsGetValue_X(DWORD dwTlsIndex);
extern "C" DWORD TlsAlloc_X();
extern "C" BOOL SystemTimeToFileTime_X(SYSTEMTIME* lpSystemTime, LPFILETIME lpFileTime);
extern "C" void Sleep_X(DWORD dwMilliseconds);
extern "C" BOOL SetThreadPriority_X(HANDLE hThread, int nPriority);
extern "C" DWORD_PTR SetThreadAffinityMask_X(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
extern "C" DWORD SetFilePointer_X(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod);
extern "C" DWORD ResumeThread_X(HANDLE hThread);
extern "C" BOOL ResetEvent_X(HANDLE hEvent);
extern "C" BOOL ReadFile_X(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
extern "C" void RaiseException_X(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, ULONG_PTR* lpArguments);
extern "C" BOOL QueryPerformanceFrequency_X(LARGE_INTEGER* lpFrequency);
extern "C" BOOL QueryPerformanceCounter_X(LARGE_INTEGER* lpPerformanceCount);
extern "C" void OutputDebugStringW_X(LPCWSTR lpOutputString);
extern "C" int MultiByteToWideChar_X(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
extern "C" BOOL IsProcessorFeaturePresent_X(DWORD ProcessorFeature);
extern "C" BOOL IsDebuggerPresent_X();
extern "C" BOOL InitializeCriticalSectionAndSpinCount_X(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
extern "C" GEOID GetUserGeoID_X(GEOCLASS GeoClass);
extern "C" int GetUserDefaultLocaleName_X(LPWSTR lpLocaleName, int cchLocaleName);
extern "C" void GetSystemTime_X(LPSYSTEMTIME lpSystemTime);
extern "C" void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo);
extern "C" HMODULE GetModuleHandleW_X(LPCWSTR lpModuleName);
extern "C" void GetLocalTime_X(LPSYSTEMTIME lpSystemTime);
extern "C" DWORD GetLastError_X();
extern "C" BOOL GetFileSizeEx_X(HANDLE hFile, PLARGE_INTEGER lpFileSize);
extern "C" DWORD GetFileAttributesW_X(LPCWSTR lpFileName);
extern "C" BOOL GetFileAttributesExW_X(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation);
extern "C" BOOL GetExitCodeThread_X(HANDLE hThread, LPDWORD lpExitCode);
extern "C" HANDLE GetCurrentThread_X();
extern "C" DWORD GetCurrentThreadId_X();
extern "C" DWORD GetCurrentProcessId_X();
extern "C" BOOL FindNextFileW_X(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData);
extern "C" HANDLE FindFirstFileW_X(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData);
extern "C" BOOL FindClose_X(HANDLE hFindFile);
extern "C" BOOL FileTimeToSystemTime_X(FILETIME* lpFileTime, LPSYSTEMTIME lpSystemTime);
extern "C" void ExitProcess_X(UINT uExitCode);
extern "C" BOOL DeleteFileW_X(LPCWSTR lpFileName);
extern "C" void DebugBreak_X();
extern "C" HANDLE CreateThread_X(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
extern "C" HANDLE CreateFileW_X(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
extern "C" HANDLE CreateEventW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName);
extern "C" HANDLE CreateEventExW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
extern "C" BOOL CreateDirectoryW_X(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
extern "C" BOOL CloseHandle_X(HANDLE hObject);
extern "C" __int64 GetConsoleType_X();
//extern "C" BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode);
// EXE EXPORTS END

View File

@@ -156,7 +156,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;NTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeader>Create</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>