528 lines
13 KiB
Plaintext
528 lines
13 KiB
Plaintext
|
__foldwin32sstuff __foldwin32sstuff;
|
||
|
foldstyleinitialization = true;
|
||
|
|
||
|
|
||
|
enablemapdirect1632 = true;
|
||
|
defaultholdwin16lock = true;
|
||
|
|
||
|
#include "types.thk"
|
||
|
|
||
|
DWORD ThunkMeowSetPSP(DWORD PSPSel) =
|
||
|
DWORD MeowSetPSP(DWORD PSPSel)
|
||
|
{}
|
||
|
|
||
|
DWORD ThunkMeowUniToAnsi(DWORD pSrc, DWORD pDst, DWORD ccnt) =
|
||
|
DWORD MeowUniToAnsi(DWORD pSrc, DWORD pDst, DWORD ccnt)
|
||
|
{}
|
||
|
|
||
|
DWORD ThunkMeowWakeThread(DWORD ptdb) =
|
||
|
DWORD MeowWakeThread(DWORD ptdb)
|
||
|
{}
|
||
|
|
||
|
VOID ProgramResumeTimer(VOID)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL InitK32AfterSysDllsLoaded(VOID)
|
||
|
{
|
||
|
//This is called from SlowBoot after the system dlls have
|
||
|
//been loaded. A good time for kernel32 to get addresses,
|
||
|
//etc. from other system libraries.
|
||
|
//There is only 1 thread when this thunk is called, so
|
||
|
//serialization is irrelevant. Release the Win16Lock so we
|
||
|
//don't trigger an assert in GrabDll.
|
||
|
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
bool FullLoRes(VOID)
|
||
|
{
|
||
|
target = LoRes;
|
||
|
|
||
|
// This thunk must *not* release the win16lock.
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD GetNEPEBuddyFromFileName32( LPSTR lpszFileName)
|
||
|
{
|
||
|
target = GetNEPEBuddyFromFileName;
|
||
|
}
|
||
|
|
||
|
VOID WOAAbort(DWORD pConsole)
|
||
|
{
|
||
|
target = CON_WOAAbort;
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL IsThreadId(DWORD)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID HGCleanupDepartingHTask(WORD hTask16)
|
||
|
{
|
||
|
//This is called from inside FreeTDB so we'd best not
|
||
|
//release the Win16Lock (besides, HGCleanupDepartingHTask
|
||
|
//will just grab it again. It's 32-bit code, but it manipulates
|
||
|
//a krnl386 data structure).
|
||
|
}
|
||
|
|
||
|
BOOL SmashEnvironment(LPSTR pchEnv){
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
DWORD LoadLibraryEx32W(LPSTR lpFileName, DWORD hFile, DWORD dwFlags)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
target = LoadLibraryExA;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
BOOL LateBindWin32ThunkPartner(DWORD lpThunkData16,
|
||
|
BOOL fWantExtraLink)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
DWORD CallProc32WHelper(DWORD lpParamStack, WORD wSS, BOOL fCSrc)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
DWORD CallProc32WFixHelper(DWORD lpParamStack, WORD wSS)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
WORD ThunkTheTemplateHandle(DWORD);
|
||
|
|
||
|
BOOL FlatCommonThunkConnect16(LPSTR pszDll16,
|
||
|
LPSTR pszDll32,
|
||
|
DWORD lpThunkLSData16,
|
||
|
LPSTR pszThunkLSData32Name,
|
||
|
DWORD dwReason,
|
||
|
WORD wUsage,
|
||
|
WORD hModule16) =
|
||
|
BOOL FlatCommonThunkConnect16(LPSTR pszDll16,
|
||
|
LPSTR pszDll32,
|
||
|
DWORD lpThunkLSData16,
|
||
|
LPSTR pszThunkLSData32Name,
|
||
|
DWORD dwReason,
|
||
|
WORD wUsage,
|
||
|
WORD hModule16)
|
||
|
{
|
||
|
// Do not, not, NOT release the Win16Lock here!!!
|
||
|
// This gets called as part of a 16-bit library load and
|
||
|
// free.
|
||
|
}
|
||
|
|
||
|
|
||
|
/* Special version of 32-bit LocalAlloc() that doesn't do any
|
||
|
* ganged handle house-cleaning. Used by the ganging code itself
|
||
|
* to prevent unwanted recursion.
|
||
|
*/
|
||
|
DWORD LocalAlloc32NG(UINT fuFlags, DWORD dwSize) =
|
||
|
DWORD LocalAllocNG(UINT fuFlags, DWORD dwSize)
|
||
|
{
|
||
|
// Can't release win16lock yet: GlobalAllocGanged preflights, then
|
||
|
// allocs. GlobalAllocGanged() should just allocate first and
|
||
|
// free the block if the database runs out of room. Then it can be
|
||
|
// safely reentered.
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL SetProcessDword( DWORD dwProcessID, INT dwIndex, DWORD dwValue) =
|
||
|
BOOL SetProcessDword( DWORD dwProcessID, LONG dwIndex, DWORD dwValue)
|
||
|
{
|
||
|
// Can't release win16lock: exported from krnl386 and used by user.
|
||
|
}
|
||
|
|
||
|
DWORD GetProcessDword( DWORD dwProcessID, INT dwIndex) =
|
||
|
DWORD GetProcessDword( DWORD dwProcessID, LONG dwIndex)
|
||
|
{
|
||
|
// Can't release win16lock: exported from krnl386 and used by user.
|
||
|
}
|
||
|
|
||
|
DWORD RegisterServiceProcess( DWORD dwProcessID, DWORD dwServiceType) =
|
||
|
DWORD RegisterServiceProcess( DWORD dwProcessID, DWORD dwServiceType)
|
||
|
{}
|
||
|
|
||
|
VOID IFatalAppExit(WORD dwAction, LPSTR lpMsg) =
|
||
|
VOID FatalAppExitA(DWORD dwAction, LPSTR lpMsg)
|
||
|
{}
|
||
|
|
||
|
DWORD OpenFileEx16And32( LPSTR lpFileName, LPSTR lpReOpenBuff, UINT fuMode, LPSTR BinName, UINT fk16, UINT fWantCompat) =
|
||
|
DWORD OpenFileEx16And32( LPSTR lpFileName, LPSTR lpReOpenBuff, UINT fuMode, LPSTR BinName, UINT fk16, UINT fWantCompat)
|
||
|
{
|
||
|
lpReOpenBuff = inout;
|
||
|
}
|
||
|
|
||
|
BOOL FileTimeToDosDateTime( LPSTR lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime) =
|
||
|
BOOL FileTimeToDosDateTime( LPSTR lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime)
|
||
|
{}
|
||
|
|
||
|
void WinExecWait(DWORD pTDB32) =
|
||
|
void WinExecWait(DWORD pTDB32)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
DWORD WaitForSingleObject(DWORD hObject, DWORD dwTimeout) =
|
||
|
DWORD WaitForSingleObject(DWORD hObject, DWORD dwTimeout)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
VOID KernelUninit() =
|
||
|
VOID KernelUninit()
|
||
|
{}
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
BOOL VirtualFree(DWORD lpAddress,
|
||
|
DWORD dwSize,
|
||
|
DWORD dwFreeType) =
|
||
|
BOOL VirtualFree(DWORD lpAddress,
|
||
|
DWORD dwSize,
|
||
|
DWORD dwFreeType)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD WOACreateConsole(DWORD hVM, WORD hWnd) =
|
||
|
DWORD CON_WOACreateConsole(DWORD hVM, DWORD hWnd)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID WOAFullScreen(DWORD pConsole, WORD status) =
|
||
|
VOID CON_WOAFullScreen(DWORD pConsole, WORD status)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID WOAGimmeTitle(DWORD pConsole, LPSTR lpBuf) =
|
||
|
VOID CON_WOAGimmeTitle(DWORD pConsole, LPSTR lpBuf)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
DWORD WOASpawnConApp(DWORD pConsole) =
|
||
|
DWORD CON_WOASpawnConApp(DWORD pConsole)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID WOATerminateProcesses(DWORD pConsole) =
|
||
|
VOID CON_WOATerminateProcesses(DWORD pConsole)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID WOADestroyConsole(DWORD pConsole) =
|
||
|
VOID CON_WOADestroyConsole(DWORD pConsole)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD ThunkLocal32Init(DWORD, DWORD, DWORD, DWORD) =
|
||
|
DWORD Local32Init(DWORD, DWORD, DWORD, DWORD)
|
||
|
{}
|
||
|
|
||
|
|
||
|
DWORD ThunkLocal32Alloc(DWORD linHeader,
|
||
|
DWORD dwcbRequest,
|
||
|
INT lMemType,
|
||
|
DWORD dwFlags) =
|
||
|
DWORD Local32Alloc (DWORD linHeader,
|
||
|
DWORD dwcbRequest,
|
||
|
INT lMemType,
|
||
|
DWORD dwFlags)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD ThunkLocal32ReAlloc(DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iType,
|
||
|
DWORD dwcbNew,
|
||
|
DWORD dwFlags) =
|
||
|
DWORD Local32ReAlloc (DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iType,
|
||
|
DWORD dwcbNew,
|
||
|
DWORD dwFlags)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD ThunkLocal32Translate(DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT wMemType,
|
||
|
INT wRetType) =
|
||
|
DWORD Local32Translate (DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT wMemType,
|
||
|
INT wRetType)
|
||
|
{}
|
||
|
|
||
|
|
||
|
DWORD ThunkLocal32SizeThkHlp(DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iMemType) =
|
||
|
DWORD Local32Size (DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iMemType)
|
||
|
{}
|
||
|
|
||
|
|
||
|
BOOL ThunkLocal32Free(DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iType) =
|
||
|
BOOL Local32Free (DWORD linHeader,
|
||
|
DWORD dwMem,
|
||
|
INT iType)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
BOOL ThunkLocal32ValidHandle(DWORD linHeader, UINT hMem) =
|
||
|
BOOL Local32ValidHandle(DWORD linHeader, UINT hMem)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
/* This thunk is called from inside k16, which does all the pointer thunking
|
||
|
* itself. So we pass pointers as dwords.
|
||
|
*/
|
||
|
DWORD CreateProcessFromWinExec(DWORD lpName, DWORD lpCmdTail, DWORD dwCmdShow, DWORD lpCurDir) =
|
||
|
DWORD CreateProcessFromWinExec(DWORD lpName, DWORD lpCmdTail, DWORD dwCmdShow, DWORD lpCurDir)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
DWORD ThunkGetProcAddress32(DWORD dwHModule, LPSTR lpProcName) =
|
||
|
DWORD GetProcAddress(DWORD dwHModule, LPSTR lpProcName)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD ThunkLoadLibrary32(LPSTR lpProcName) =
|
||
|
DWORD LoadLibraryA(LPSTR lpProcName)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL ThunkFreeLibrary32(DWORD dwHModule) =
|
||
|
BOOL FreeLibrary(DWORD dwHModule)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID FreeInitResources32() =
|
||
|
VOID FreeInitResources()
|
||
|
{}
|
||
|
|
||
|
|
||
|
/* Yes, the return type should really be BOOL but the old internal
|
||
|
* thunk that this thunk replaces treated it as DWORD and exported it
|
||
|
* out of k16. To be compatible, we have to maintain that behavior. Ugh!
|
||
|
*/
|
||
|
DWORD ThunkSetW32Event(DWORD dwHEvent) =
|
||
|
DWORD SetEvent(DWORD dwHEvent)
|
||
|
{}
|
||
|
|
||
|
|
||
|
/* Yes, the return type should really be BOOL but the old internal
|
||
|
* thunk that this thunk replaces treated it as DWORD and exported it
|
||
|
* out of k16. To be compatible, we have to maintain that behavior. Ugh!
|
||
|
*/
|
||
|
DWORD ThunkResetW32Event(DWORD dwHEvent) =
|
||
|
DWORD ResetEvent(DWORD dwHEvent)
|
||
|
{}
|
||
|
|
||
|
|
||
|
/* K16 calls this thunk and thunks the parameters. We just mode switch.
|
||
|
*/
|
||
|
DWORD ThunkCreateW32Event(DWORD, DWORD, DWORD, DWORD) =
|
||
|
DWORD CreateEventA(DWORD, DWORD, DWORD, DWORD)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
WORD ThunkGetHModK16FromHModK32(DWORD hmod) =
|
||
|
WORD GetHModK16FromHModK32( DWORD hmod)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
DWORD ThunkCreateProcessWin16(DWORD pptdb, DWORD pstib, DWORD Win16Tdb, DWORD lpStartAddr) =
|
||
|
DWORD CreateProcessWin16(DWORD pptdb, DWORD pstib, DWORD Win16Tdb, DWORD lpStartAddr)
|
||
|
{}
|
||
|
|
||
|
/* Special routine called from K16. K16 thunks all the parameters so we
|
||
|
* just provide the mode switch.
|
||
|
*/
|
||
|
DWORD ThunkCreateThread16(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD) =
|
||
|
DWORD CreateThread16(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD)
|
||
|
{}
|
||
|
|
||
|
|
||
|
|
||
|
BOOL ThunkTerminateThread(DWORD hThread, DWORD dwExitCode) =
|
||
|
BOOL TerminateThread(DWORD hThread, DWORD dwExitCode)
|
||
|
{}
|
||
|
|
||
|
|
||
|
VOID ThunkExitProcess(UINT uExitCode) =
|
||
|
VOID ExitProcess(UINT uExitCode)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL ThunkTerminateProcess(DWORD hProcess, UINT uExitCode) =
|
||
|
BOOL TerminateProcess(DWORD hProcess, UINT uExitCode)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID ThunkCloseDOSHandles() =
|
||
|
VOID CloseDOSHandles()
|
||
|
{}
|
||
|
|
||
|
|
||
|
BOOL ThunkCloseW32Handle(DWORD Handle) =
|
||
|
BOOL CloseHandle(DWORD Handle)
|
||
|
{}
|
||
|
|
||
|
|
||
|
DWORD WaitForMultipleObjectsEx (DWORD cObjects,
|
||
|
LPVOID lphObjects,
|
||
|
DWORD bWaitForAll,
|
||
|
DWORD dwTimeOut,
|
||
|
DWORD bAlertable) =
|
||
|
|
||
|
DWORD WaitForMultipleObjectsEx (DWORD cObjects,
|
||
|
LPVOID lphObjects,
|
||
|
DWORD bWaitForAll,
|
||
|
DWORD dwTimeOut,
|
||
|
DWORD bAlertable)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD ThunkConvertToGlobalHandle(DWORD Handle) =
|
||
|
DWORD ConvertToGlobalHandle(DWORD Handle)
|
||
|
{}
|
||
|
|
||
|
|
||
|
DWORD ThunkGetModuleFileName(DWORD hModule, LPSTR lpFileName, UINT nSize) =
|
||
|
DWORD GetModuleFileNameA (DWORD hModule, LPSTR lpFileName, UINT nSize)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
DWORD ThunkMapProcessHandle(DWORD dwHandle) =
|
||
|
DWORD MapProcessHandle(DWORD dwHandle)
|
||
|
{}
|
||
|
|
||
|
DWORD ThunkGetCurrentDirectory(DWORD cch, LPSTR lpBuffer) =
|
||
|
DWORD GetCurrentDirectoryA(DWORD cch, LPSTR lpBuffer)
|
||
|
{}
|
||
|
|
||
|
BOOL NukeProcess(DWORD ppdb, UINT uExitCode, ULONG ulFlags) =
|
||
|
BOOL NukeProcess(DWORD ppdb, UINT uExitCode, ULONG ulFlags)
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID CreateFaultThread() =
|
||
|
VOID CreateFaultThread()
|
||
|
{}
|
||
|
|
||
|
BOOL GetVersionEx(LPSTR lpBuffer) =
|
||
|
BOOL GetVersionExA(LPSTR lpBuffer)
|
||
|
{}
|
||
|
|
||
|
DWORD FindFirstFile(LPSTR lpszSearchFile, LPSTR lpFindData) =
|
||
|
DWORD FindFirstFileA(LPSTR lpszSearchFile, LPSTR lpFindData)
|
||
|
{}
|
||
|
|
||
|
BOOL FindNextFile(DWORD hFindFile, LPSTR lpFindData) =
|
||
|
BOOL FindNextFileA(DWORD hFindFile, LPSTR lpFindData)
|
||
|
{}
|
||
|
|
||
|
BOOL FindClose(DWORD hFindFile) =
|
||
|
BOOL FindClose(DWORD hFindFile)
|
||
|
{}
|
||
|
|
||
|
BOOL FileTimeToLocalFileTime(LPSTR lpcfiletime, LPSTR lpfiletime) =
|
||
|
BOOL FileTimeToLocalFileTime(LPSTR lpcfiletime, LPSTR lpfiletime)
|
||
|
{}
|
||
|
|
||
|
DWORD SetCurrentDirectory32(LPSTR lpszDir) =
|
||
|
DWORD SetCurrentDirectoryA(LPSTR lpszDir)
|
||
|
{}
|
||
|
|
||
|
DWORD GetCurrentDirectory(DWORD cb, LPSTR lpszDir) =
|
||
|
DWORD GetCurrentDirectoryA(DWORD cb, LPSTR lpszDir)
|
||
|
{}
|
||
|
|
||
|
|
||
|
DWORD GetModuleHandle32(LPSTR lpszModule) =
|
||
|
DWORD GetModuleHandleA(LPSTR lpszModule)
|
||
|
{}
|
||
|
|
||
|
VOID InvalidateNLSCache() =
|
||
|
VOID InvalidateNLSCache()
|
||
|
{}
|
||
|
|
||
|
VOID ISetErrorModeEx(UINT wErrorMode) =
|
||
|
VOID SetErrorMode(UINT wErrorMode)
|
||
|
{}
|
||
|
|
||
|
VOID NotifyDetachFromWin16() =
|
||
|
VOID NotifyDetachFromWin16()
|
||
|
{
|
||
|
releasewin16lock = true;
|
||
|
}
|
||
|
|
||
|
VOID ThunkDeallocOrphanedCrsts() =
|
||
|
VOID ThunkDeallocOrphanedCrsts()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
VOID FaultSave(LPVOID pfaultinfo) =
|
||
|
VOID FaultSave(LPVOID pfaultinfo)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
VOID FaultRestore(LPVOID pfaultinfo) =
|
||
|
VOID FaultRestore(LPVOID pfaultinfo)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
DWORD GetACP()=
|
||
|
DWORD GetACP()
|
||
|
{
|
||
|
}
|