Moved a couple more functions to dlls/kernel.
This commit is contained in:
parent
ec39821750
commit
ba71316172
|
@ -1586,6 +1586,104 @@ void WINAPI FreeLibrary16( HINSTANCE16 handle )
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetModuleHandle16 (KERNEL32.@)
|
||||
*/
|
||||
HMODULE16 WINAPI GetModuleHandle16( LPCSTR name )
|
||||
{
|
||||
HMODULE16 hModule = hFirstModule;
|
||||
LPSTR s;
|
||||
BYTE len, *name_table;
|
||||
char tmpstr[MAX_PATH];
|
||||
NE_MODULE *pModule;
|
||||
|
||||
TRACE("(%s)\n", name);
|
||||
|
||||
if (!HIWORD(name)) return GetExePtr(LOWORD(name));
|
||||
|
||||
len = strlen(name);
|
||||
if (!len) return 0;
|
||||
|
||||
lstrcpynA(tmpstr, name, sizeof(tmpstr));
|
||||
|
||||
/* If 'name' matches exactly the module name of a module:
|
||||
* Return its handle.
|
||||
*/
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
name_table = (BYTE *)pModule + pModule->name_table;
|
||||
if ((*name_table == len) && !strncmp(name, name_table+1, len))
|
||||
return hModule;
|
||||
}
|
||||
|
||||
/* If uppercased 'name' matches exactly the module name of a module:
|
||||
* Return its handle
|
||||
*/
|
||||
for (s = tmpstr; *s; s++) *s = FILE_toupper(*s);
|
||||
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
name_table = (BYTE *)pModule + pModule->name_table;
|
||||
/* FIXME: the strncasecmp is WRONG. It should not be case insensitive,
|
||||
* but case sensitive! (Unfortunately Winword 6 and subdlls have
|
||||
* lowercased module names, but try to load uppercase DLLs, so this
|
||||
* 'i' compare is just a quickfix until the loader handles that
|
||||
* correctly. -MM 990705
|
||||
*/
|
||||
if ((*name_table == len) && !FILE_strncasecmp(tmpstr, name_table+1, len))
|
||||
return hModule;
|
||||
}
|
||||
|
||||
/* If the base filename of 'name' matches the base filename of the module
|
||||
* filename of some module (case-insensitive compare):
|
||||
* Return its handle.
|
||||
*/
|
||||
|
||||
/* basename: search backwards in passed name to \ / or : */
|
||||
s = tmpstr + strlen(tmpstr);
|
||||
while (s > tmpstr)
|
||||
{
|
||||
if (s[-1]=='/' || s[-1]=='\\' || s[-1]==':')
|
||||
break;
|
||||
s--;
|
||||
}
|
||||
|
||||
/* search this in loaded filename list */
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
char *loadedfn;
|
||||
OFSTRUCT *ofs;
|
||||
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (!pModule->fileinfo) continue;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
ofs = (OFSTRUCT*)((BYTE *)pModule + pModule->fileinfo);
|
||||
loadedfn = ((char*)ofs->szPathName) + strlen(ofs->szPathName);
|
||||
/* basename: search backwards in pathname to \ / or : */
|
||||
while (loadedfn > (char*)ofs->szPathName)
|
||||
{
|
||||
if (loadedfn[-1]=='/' || loadedfn[-1]=='\\' || loadedfn[-1]==':')
|
||||
break;
|
||||
loadedfn--;
|
||||
}
|
||||
/* case insensitive compare ... */
|
||||
if (!FILE_strcasecmp(loadedfn, s))
|
||||
return hModule;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* GetModuleName (KERNEL.27)
|
||||
*/
|
||||
|
|
|
@ -51,16 +51,6 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(module);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(loaddll);
|
||||
|
||||
#include "pshpack1.h"
|
||||
typedef struct _GPHANDLERDEF
|
||||
{
|
||||
WORD selector;
|
||||
WORD rangeStart;
|
||||
WORD rangeEnd;
|
||||
WORD handler;
|
||||
} GPHANDLERDEF;
|
||||
#include "poppack.h"
|
||||
|
||||
#define hFirstModule (pThhook->hExeHead)
|
||||
|
||||
|
||||
|
@ -97,103 +87,3 @@ INT16 WINAPI GetModuleFileName16( HINSTANCE16 hModule, LPSTR lpFileName,
|
|||
TRACE("%04x -> '%s'\n", hModule, lpFileName );
|
||||
return strlen(lpFileName);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetModuleHandle16 (KERNEL32.@)
|
||||
*/
|
||||
HMODULE16 WINAPI GetModuleHandle16( LPCSTR name )
|
||||
{
|
||||
HMODULE16 hModule = hFirstModule;
|
||||
LPSTR s;
|
||||
BYTE len, *name_table;
|
||||
char tmpstr[MAX_PATH];
|
||||
NE_MODULE *pModule;
|
||||
|
||||
TRACE("(%s)\n", name);
|
||||
|
||||
if (!HIWORD(name))
|
||||
return GetExePtr(LOWORD(name));
|
||||
|
||||
len = strlen(name);
|
||||
if (!len)
|
||||
return 0;
|
||||
|
||||
lstrcpynA(tmpstr, name, sizeof(tmpstr));
|
||||
|
||||
/* If 'name' matches exactly the module name of a module:
|
||||
* Return its handle.
|
||||
*/
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
name_table = (BYTE *)pModule + pModule->name_table;
|
||||
if ((*name_table == len) && !strncmp(name, name_table+1, len))
|
||||
return hModule;
|
||||
}
|
||||
|
||||
/* If uppercased 'name' matches exactly the module name of a module:
|
||||
* Return its handle
|
||||
*/
|
||||
for (s = tmpstr; *s; s++) *s = FILE_toupper(*s);
|
||||
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
name_table = (BYTE *)pModule + pModule->name_table;
|
||||
/* FIXME: the strncasecmp is WRONG. It should not be case insensitive,
|
||||
* but case sensitive! (Unfortunately Winword 6 and subdlls have
|
||||
* lowercased module names, but try to load uppercase DLLs, so this
|
||||
* 'i' compare is just a quickfix until the loader handles that
|
||||
* correctly. -MM 990705
|
||||
*/
|
||||
if ((*name_table == len) && !FILE_strncasecmp(tmpstr, name_table+1, len))
|
||||
return hModule;
|
||||
}
|
||||
|
||||
/* If the base filename of 'name' matches the base filename of the module
|
||||
* filename of some module (case-insensitive compare):
|
||||
* Return its handle.
|
||||
*/
|
||||
|
||||
/* basename: search backwards in passed name to \ / or : */
|
||||
s = tmpstr + strlen(tmpstr);
|
||||
while (s > tmpstr)
|
||||
{
|
||||
if (s[-1]=='/' || s[-1]=='\\' || s[-1]==':')
|
||||
break;
|
||||
s--;
|
||||
}
|
||||
|
||||
/* search this in loaded filename list */
|
||||
for (hModule = hFirstModule; hModule ; hModule = pModule->next)
|
||||
{
|
||||
char *loadedfn;
|
||||
OFSTRUCT *ofs;
|
||||
|
||||
pModule = NE_GetPtr( hModule );
|
||||
if (!pModule) break;
|
||||
if (!pModule->fileinfo) continue;
|
||||
if (pModule->flags & NE_FFLAGS_WIN32) continue;
|
||||
|
||||
ofs = (OFSTRUCT*)((BYTE *)pModule + pModule->fileinfo);
|
||||
loadedfn = ((char*)ofs->szPathName) + strlen(ofs->szPathName);
|
||||
/* basename: search backwards in pathname to \ / or : */
|
||||
while (loadedfn > (char*)ofs->szPathName)
|
||||
{
|
||||
if (loadedfn[-1]=='/' || loadedfn[-1]=='\\' || loadedfn[-1]==':')
|
||||
break;
|
||||
loadedfn--;
|
||||
}
|
||||
/* case insensitive compare ... */
|
||||
if (!FILE_strcasecmp(loadedfn, s))
|
||||
return hModule;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -67,15 +67,6 @@ static TDB *TASK_GetPtr( HTASK16 hTask )
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* TASK_GetCurrent
|
||||
*/
|
||||
TDB *TASK_GetCurrent(void)
|
||||
{
|
||||
return TASK_GetPtr( GetCurrentTask() );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetCurrentTask (KERNEL32.@)
|
||||
*/
|
||||
|
@ -84,20 +75,6 @@ HTASK16 WINAPI GetCurrentTask(void)
|
|||
return NtCurrentTeb()->htask16;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetCurrentPDB (KERNEL.37)
|
||||
*
|
||||
* UNDOC: returns PSP of KERNEL in high word
|
||||
*/
|
||||
DWORD WINAPI GetCurrentPDB16(void)
|
||||
{
|
||||
TDB *pTask;
|
||||
|
||||
if (!(pTask = TASK_GetCurrent())) return 0;
|
||||
return MAKELONG(pTask->hPDB, 0); /* FIXME */
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetExePtrHelper
|
||||
*/
|
||||
|
@ -146,20 +123,6 @@ static inline HMODULE16 GetExePtrHelper( HANDLE16 handle, HTASK16 *hTask )
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetExePtr (KERNEL.133)
|
||||
*/
|
||||
HMODULE16 WINAPI WIN16_GetExePtr( HANDLE16 handle )
|
||||
{
|
||||
HTASK16 hTask = 0;
|
||||
HMODULE16 hModule = GetExePtrHelper( handle, &hTask );
|
||||
STACK16FRAME *frame = CURRENT_STACK16;
|
||||
frame->ecx = hModule;
|
||||
if (hTask) frame->es = hTask;
|
||||
return hModule;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* K228 (KERNEL.228)
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue