Fixed some handle conversions in prevision of void* handles.

This commit is contained in:
Alexandre Julliard 2002-10-04 00:27:10 +00:00
parent dd0c4c16ae
commit 613ead7f0f
8 changed files with 64 additions and 68 deletions

View File

@ -37,7 +37,7 @@ static PLOADED_IMAGE IMAGEHLP_pLastLoadedImage=NULL;
static LOADED_IMAGE IMAGEHLP_EmptyLoadedImage = {
NULL, /* ModuleName */
0xffffffff, /* hFile */
0, /* hFile */
NULL, /* MappedAddress */
NULL, /* FileHeader */
NULL, /* LastRvaSection */
@ -317,5 +317,3 @@ BOOL WINAPI UnMapAndLoad(PLOADED_IMAGE LoadedImage)
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return FALSE;
}

View File

@ -453,7 +453,7 @@ int MSVCRT_system(const char* cmd)
*/
int _loaddll(const char* dllname)
{
return LoadLibraryA(dllname);
return (int)LoadLibraryA(dllname);
}
/*********************************************************************
@ -461,7 +461,7 @@ int _loaddll(const char* dllname)
*/
int _unloaddll(int dll)
{
if (FreeLibrary((HANDLE)dll))
if (FreeLibrary((HMODULE)dll))
return 0;
else
{

View File

@ -181,8 +181,8 @@ BOOL16 WINAPI GetIconInfo16(HICON16 hIcon, LPICONINFO16 iconinfo)
iconinfo->fIcon = ii32.fIcon;
iconinfo->xHotspot = ii32.xHotspot;
iconinfo->yHotspot = ii32.yHotspot;
iconinfo->hbmMask = ii32.hbmMask;
iconinfo->hbmColor = ii32.hbmColor;
iconinfo->hbmMask = HBITMAP_16(ii32.hbmMask);
iconinfo->hbmColor = HBITMAP_16(ii32.hbmColor);
return ret;
}
@ -204,8 +204,7 @@ HCURSOR16 WINAPI CreateCursor16(HINSTANCE16 hInstance,
info.bPlanes = 1;
info.bBitsPerPixel = 1;
return CreateCursorIconIndirect16(HINSTANCE_32(hInstance), &info, lpANDbits,
lpXORbits);
return CreateCursorIconIndirect16(hInstance, &info, lpANDbits, lpXORbits);
}
/**********************************************************************

View File

@ -1074,7 +1074,7 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter)
* just create to find a DEVMODEA struct (it will use the WINEPS default
* one in case it is not there, so we are ok).
*/
size = DocumentPropertiesW(0, -1, pi->pPrinterName, NULL, NULL, 0);
size = DocumentPropertiesW(0, 0, pi->pPrinterName, NULL, NULL, 0);
if(size < 0) {
FIXME("DocumentPropertiesW on printer '%s' fails\n", debugstr_w(pi->pPrinterName));
size = sizeof(DEVMODEW);
@ -1084,7 +1084,7 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter)
else {
dmW = HeapAlloc(GetProcessHeap(), 0, size);
dmW->dmSize = size;
if (0>DocumentPropertiesW(0,-1,pi->pPrinterName,dmW,NULL,DM_OUT_BUFFER)) {
if (0>DocumentPropertiesW(0,0,pi->pPrinterName,dmW,NULL,DM_OUT_BUFFER)) {
ERR("DocumentPropertiesW on printer '%s' failed!\n", debugstr_w(pi->pPrinterName));
SetLastError(ERROR_UNKNOWN_PRINTER_DRIVER);
return 0;

View File

@ -114,7 +114,7 @@ typedef struct tagMODULEENTRY32
DWORD ProccntUsage;
BYTE *modBaseAddr;
DWORD modBaseSize;
DWORD hModule;
HMODULE hModule;
char szModule[MAX_MODULE_NAME32 + 1];
char szExePath[MAX_PATH];
} MODULEENTRY32, *PMODULEENTRY32, *LPMODULEENTRY32;
@ -128,7 +128,7 @@ typedef struct tagMODULEENTRY32W
DWORD ProccntUsage;
BYTE *modBaseAddr;
DWORD modBaseSize;
DWORD hModule;
HMODULE hModule;
WCHAR szModule[MAX_MODULE_NAME32 + 1];
WCHAR szExePath[MAX_PATH];
} MODULEENTRY32W, *PMODULEENTRY32W, *LPMODULEENTRY32W;

View File

@ -56,7 +56,10 @@ WINE_DECLARE_DEBUG_CHANNEL(segment);
/* convert PE image VirtualAddress to Real Address */
#define RVA(x) ((void *)((char *)load_addr+(unsigned int)(x)))
inline static void *get_rva( HMODULE module, DWORD va )
{
return (void *)((char *)module + va);
}
#define AdjustPtr(ptr,delta) ((char *)(ptr) + (delta))
@ -66,37 +69,36 @@ void dump_exports( HMODULE hModule )
int i, j;
WORD *ordinal;
DWORD *function,*functions;
BYTE **name;
unsigned int load_addr = hModule;
DWORD *name;
IMAGE_EXPORT_DIRECTORY *pe_exports;
DWORD rva_start, size;
pe_exports = RtlImageDirectoryEntryToData( hModule, TRUE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size );
rva_start = (char *)pe_exports - (char *)hModule;
Module = (char*)RVA(pe_exports->Name);
Module = get_rva(hModule, pe_exports->Name);
DPRINTF("*******EXPORT DATA*******\n");
DPRINTF("Module name is %s, %ld functions, %ld names\n",
Module, pe_exports->NumberOfFunctions, pe_exports->NumberOfNames);
ordinal = RVA(pe_exports->AddressOfNameOrdinals);
functions = function = RVA(pe_exports->AddressOfFunctions);
name = RVA(pe_exports->AddressOfNames);
ordinal = get_rva(hModule, pe_exports->AddressOfNameOrdinals);
functions = function = get_rva(hModule, pe_exports->AddressOfFunctions);
name = get_rva(hModule, pe_exports->AddressOfNames);
DPRINTF(" Ord RVA Addr Name\n" );
for (i=0;i<pe_exports->NumberOfFunctions;i++, function++)
{
if (!*function) continue; /* No such function */
DPRINTF( "%4ld %08lx %p", i + pe_exports->Base, *function, RVA(*function) );
DPRINTF( "%4ld %08lx %p", i + pe_exports->Base, *function, get_rva(hModule, *function) );
/* Check if we have a name for it */
for (j = 0; j < pe_exports->NumberOfNames; j++)
if (ordinal[j] == i)
{
DPRINTF( " %s", (char*)RVA(name[j]) );
DPRINTF( " %s", (char*)get_rva(hModule, name[j]) );
break;
}
if ((*function >= rva_start) && (*function <= rva_start + size))
DPRINTF(" (forwarded -> %s)", (char *)RVA(*function));
DPRINTF(" (forwarded -> %s)", (char *)get_rva(hModule, *function));
DPRINTF("\n");
}
}
@ -117,11 +119,11 @@ static FARPROC PE_FindExportedFunction(
{
WORD * ordinals;
DWORD * function;
BYTE ** name, *ename = NULL;
int i, ordinal;
unsigned int load_addr = wm->module;
DWORD rva_start, addr;
char * forward;
DWORD *name;
char *ename = NULL;
FARPROC proc;
IMAGE_EXPORT_DIRECTORY *exports;
DWORD exp_size;
@ -133,9 +135,9 @@ static FARPROC PE_FindExportedFunction(
if (HIWORD(funcName)) TRACE("(%s)\n",funcName);
else TRACE("(%d)\n",LOWORD(funcName));
ordinals= RVA(exports->AddressOfNameOrdinals);
function= RVA(exports->AddressOfFunctions);
name = RVA(exports->AddressOfNames);
ordinals= get_rva(wm->module, exports->AddressOfNameOrdinals);
function= get_rva(wm->module, exports->AddressOfFunctions);
name = get_rva(wm->module, exports->AddressOfNames);
forward = NULL;
rva_start = (char *)exports - (char *)wm->module;
@ -146,7 +148,7 @@ static FARPROC PE_FindExportedFunction(
/* first check the hint */
if (hint >= 0 && hint <= max)
{
ename = RVA(name[hint]);
ename = get_rva(wm->module, name[hint]);
if (!strcmp( ename, funcName ))
{
ordinal = ordinals[hint];
@ -158,7 +160,7 @@ static FARPROC PE_FindExportedFunction(
while (min <= max)
{
int res, pos = (min + max) / 2;
ename = RVA(name[pos]);
ename = get_rva(wm->module, name[pos]);
if (!(res = strcmp( ename, funcName )))
{
ordinal = ordinals[pos];
@ -177,7 +179,7 @@ static FARPROC PE_FindExportedFunction(
for (i = 0; i < exports->NumberOfNames; i++)
if (ordinals[i] == ordinal)
{
ename = RVA(name[i]);
ename = get_rva(wm->module, name[i]);
break;
}
}
@ -192,7 +194,7 @@ static FARPROC PE_FindExportedFunction(
addr = function[ordinal];
if (!addr) return NULL;
proc = RVA(addr);
proc = get_rva(wm->module, addr);
if (((char *)proc < (char *)exports) || ((char *)proc >= (char *)exports + exp_size))
{
if (snoop)
@ -229,7 +231,6 @@ static FARPROC PE_FindExportedFunction(
*/
DWORD PE_fixup_imports( WINE_MODREF *wm )
{
unsigned int load_addr = wm->module;
int i,characteristics_detection=1;
IMAGE_IMPORT_DESCRIPTOR *imports, *pe_imp;
DWORD size;
@ -268,7 +269,7 @@ DWORD PE_fixup_imports( WINE_MODREF *wm )
WINE_MODREF *wmImp;
IMAGE_IMPORT_BY_NAME *pe_name;
PIMAGE_THUNK_DATA import_list,thunk_list;
char *name = (char *) RVA(pe_imp->Name);
char *name = get_rva(wm->module, pe_imp->Name);
if (characteristics_detection && !pe_imp->u.Characteristics)
break;
@ -284,8 +285,8 @@ DWORD PE_fixup_imports( WINE_MODREF *wm )
if (pe_imp->u.OriginalFirstThunk != 0) { /* original MS style */
TRACE("Microsoft style imports used\n");
import_list =(PIMAGE_THUNK_DATA) RVA(pe_imp->u.OriginalFirstThunk);
thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
import_list = get_rva(wm->module, (DWORD)pe_imp->u.OriginalFirstThunk);
thunk_list = get_rva(wm->module, (DWORD)pe_imp->FirstThunk);
while (import_list->u1.Ordinal) {
if (IMAGE_SNAP_BY_ORDINAL(import_list->u1.Ordinal)) {
@ -301,7 +302,7 @@ DWORD PE_fixup_imports( WINE_MODREF *wm )
thunk_list->u1.Function = (PDWORD)0xdeadbeef;
}
} else { /* import by name */
pe_name = (PIMAGE_IMPORT_BY_NAME)RVA(import_list->u1.AddressOfData);
pe_name = get_rva(wm->module, (DWORD)import_list->u1.AddressOfData);
TRACE("--- %s %s.%d\n", pe_name->Name, name, pe_name->Hint);
thunk_list->u1.Function=(PDWORD)MODULE_GetProcAddress(
wmImp->module, pe_name->Name, pe_name->Hint, TRUE
@ -317,7 +318,7 @@ DWORD PE_fixup_imports( WINE_MODREF *wm )
}
} else { /* Borland style */
TRACE("Borland style imports used\n");
thunk_list = (PIMAGE_THUNK_DATA) RVA(pe_imp->FirstThunk);
thunk_list = get_rva(wm->module, (DWORD)pe_imp->FirstThunk);
while (thunk_list->u1.Ordinal) {
if (IMAGE_SNAP_BY_ORDINAL(thunk_list->u1.Ordinal)) {
/* not sure about this branch, but it seems to work */
@ -333,7 +334,7 @@ DWORD PE_fixup_imports( WINE_MODREF *wm )
thunk_list->u1.Function = (PDWORD)0xdeadbeef;
}
} else {
pe_name=(PIMAGE_IMPORT_BY_NAME) RVA(thunk_list->u1.AddressOfData);
pe_name=get_rva(wm->module, (DWORD)thunk_list->u1.AddressOfData);
TRACE("--- %s %s.%d\n",
pe_name->Name,name,pe_name->Hint);
thunk_list->u1.Function=(PDWORD)MODULE_GetProcAddress(
@ -411,7 +412,6 @@ HMODULE PE_LoadImage( HANDLE hFile, LPCSTR filename, DWORD flags )
WINE_MODREF *PE_CreateModule( HMODULE hModule, LPCSTR filename, DWORD flags,
HANDLE hFile, BOOL builtin )
{
DWORD load_addr = (DWORD)hModule; /* for RVA */
IMAGE_NT_HEADERS *nt;
IMAGE_DATA_DIRECTORY *dir;
IMAGE_EXPORT_DIRECTORY *pe_export = NULL;
@ -422,8 +422,7 @@ WINE_MODREF *PE_CreateModule( HMODULE hModule, LPCSTR filename, DWORD flags,
nt = RtlImageNtHeader(hModule);
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_EXPORT;
if (dir->Size)
pe_export = (PIMAGE_EXPORT_DIRECTORY)RVA(dir->VirtualAddress);
if (dir->Size) pe_export = get_rva(hModule, dir->VirtualAddress);
dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_EXCEPTION;
if (dir->Size) FIXME("Exception directory ignored\n" );
@ -462,7 +461,7 @@ WINE_MODREF *PE_CreateModule( HMODULE hModule, LPCSTR filename, DWORD flags,
*/
{
ImgDelayDescr *pe_delay = NULL;
pe_delay = (PImgDelayDescr)RVA(dir->VirtualAddress);
pe_delay = get_rva(hModule, dir->VirtualAddress);
TRACE_(delayhlp)("pe_delay->grAttrs = %08x\n", pe_delay->grAttrs);
TRACE_(delayhlp)("pe_delay->szName = %s\n", pe_delay->szName);
TRACE_(delayhlp)("pe_delay->phmod = %08x\n", pe_delay->phmod);

View File

@ -469,7 +469,7 @@ static HGDIOBJ FONT_SelectObject( HGDIOBJ handle, void *obj, HDC hdc )
if (ret && dc->gdiFont) dc->gdiFont = 0;
if (ret == GDI_ERROR)
if (ret == HGDI_ERROR)
ret = 0; /* SelectObject returns 0 on error */
else
{

View File

@ -726,7 +726,7 @@ void *GDI_ReallocObject( WORD size, HGDIOBJ handle, void *object )
{
HGDIOBJ new_handle;
if (handle & 2) /* GDI heap handle */
if ((UINT_PTR)handle & 2) /* GDI heap handle */
{
LOCAL_Unlock( GDI_HeapSel, handle );
if ((new_handle = LOCAL_ReAlloc( GDI_HeapSel, handle, size, LMEM_MOVEABLE )))
@ -764,7 +764,7 @@ BOOL GDI_FreeObject( HGDIOBJ handle, void *ptr )
object->wMagic = 0; /* Mark it as invalid */
object->funcs = NULL;
if (handle & 2) /* GDI heap handle */
if ((UINT_PTR)handle & 2) /* GDI heap handle */
{
LOCAL_Unlock( GDI_HeapSel, handle );
LOCAL_Free( GDI_HeapSel, handle );
@ -798,7 +798,7 @@ void *GDI_GetObjPtr( HGDIOBJ handle, WORD magic )
_EnterSysLevel( &GDI_level );
if (handle & 2) /* GDI heap handle */
if ((UINT_PTR)handle & 2) /* GDI heap handle */
{
ptr = (GDIOBJHDR *)LOCAL_Lock( GDI_HeapSel, handle );
if (ptr)
@ -814,7 +814,7 @@ void *GDI_GetObjPtr( HGDIOBJ handle, WORD magic )
}
else /* large heap handle */
{
int i = (handle >> 2) - FIRST_LARGE_HANDLE;
int i = ((UINT_PTR)handle >> 2) - FIRST_LARGE_HANDLE;
if (i >= 0 && i < MAX_LARGE_HANDLES)
{
ptr = large_handles[i];
@ -840,7 +840,7 @@ void *GDI_GetObjPtr( HGDIOBJ handle, WORD magic )
*/
void GDI_ReleaseObj( HGDIOBJ handle )
{
if (handle & 2) LOCAL_Unlock( GDI_HeapSel, handle );
if ((UINT_PTR)handle & 2) LOCAL_Unlock( GDI_HeapSel, handle );
TRACE_SEC( handle, "leave" );
_LeaveSysLevel( &GDI_level );
}