diff --git a/rosapps/devutils/gdihv/gdi.h b/rosapps/devutils/gdihv/gdi.h index 0cc5a7f49a7..d54b39852ad 100644 --- a/rosapps/devutils/gdihv/gdi.h +++ b/rosapps/devutils/gdihv/gdi.h @@ -48,6 +48,7 @@ typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void); #define GDI_OBJECT_TYPE_BITMAP 0x00050000 #define GDI_OBJECT_TYPE_PALETTE 0x00080000 #define GDI_OBJECT_TYPE_FONT 0x000a0000 +#define GDI_OBJECT_TYPE_PFE 0x000c0000 #define GDI_OBJECT_TYPE_BRUSH 0x00100000 #define GDI_OBJECT_TYPE_EMF 0x00210000 #define GDI_OBJECT_TYPE_PEN 0x00300000 diff --git a/rosapps/devutils/gdihv/gdihv.c b/rosapps/devutils/gdihv/gdihv.c index d9e495f3778..23b2f65baf2 100644 --- a/rosapps/devutils/gdihv/gdihv.c +++ b/rosapps/devutils/gdihv/gdihv.c @@ -23,9 +23,17 @@ #include "gdihv.h" HINSTANCE g_hInstance; -GDIQUERYPROC GdiQueryHandleTable; PGDI_TABLE_ENTRY GdiHandleTable = 0; +static +PGDI_TABLE_ENTRY +MyGdiQueryTable() +{ + PTEB pTeb = NtCurrentTeb(); + PPEB pPeb = pTeb->ProcessEnvironmentBlock; + return pPeb->GdiSharedHandleTable; +} + int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, @@ -36,12 +44,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance, InitCommonControls(); - GdiQueryHandleTable = (GDIQUERYPROC)GetProcAddress(GetModuleHandle(L"GDI32.DLL"), "GdiQueryTable"); - if(!GdiQueryHandleTable) - { - return -1; - } - GdiHandleTable = GdiQueryHandleTable(); + GdiHandleTable = MyGdiQueryTable(); DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_MAINWND), HWND_DESKTOP, MainWindow_WndProc, 0); diff --git a/rosapps/devutils/gdihv/handlelist.c b/rosapps/devutils/gdihv/handlelist.c index b7d6e77a473..935083286a4 100644 --- a/rosapps/devutils/gdihv/handlelist.c +++ b/rosapps/devutils/gdihv/handlelist.c @@ -86,7 +86,7 @@ HandleList_Update(HWND hHandleListCtrl, HANDLE ProcessId) ((ProcessId == (HANDLE)1) && ((pEntry->Type & GDI_HANDLE_BASETYPE_MASK) == 0)) ) { if (ProcessId == (HANDLE)1 || - ProcessId == (HANDLE)((ULONG)pEntry->ProcessId & 0xfffc)) + ((LONG)ProcessId & 0xfffc) == ((ULONG)pEntry->ProcessId & 0xfffc)) { handle = GDI_HANDLE_CREATE(i, pEntry->Type); index = ListView_GetItemCount(hHandleListCtrl); @@ -178,6 +178,9 @@ GetTypeName(HANDLE handle) case GDI_OBJECT_TYPE_DCE: strText = L"DCE"; break; + case GDI_OBJECT_TYPE_PFE: + strText = L"PFE"; + break; case GDI_OBJECT_TYPE_DONTCARE: strText = L"anything"; break;