ReactOS 0.4.15-dev-6679-g945ee4b
gditools.c
Go to the documentation of this file.
1
2
3/* SDK/DDK/NDK Headers. */
4#define WIN32_NO_STATUS
5#include <windef.h>
6#include <winbase.h>
7#include <wingdi.h>
8#include <winddi.h>
9#include <prntfont.h>
10
11#define NTOS_MODE_USER
12#include <ndk/ntndk.h>
13
14/* Public Win32K Headers */
15#include <ntgdityp.h>
16#include <ntgdi.h>
17#include <ntgdihdl.h>
18
21 VOID)
22{
23 PTEB pTeb = NtCurrentTeb();
24 PPEB pPeb = pTeb->ProcessEnvironmentBlock;
25 return pPeb->GdiSharedHandleTable;
26}
27
28BOOL
30 _In_ HGDIOBJ hobj)
31{
32 PENTRY pentHmgr = GdiQueryTable();
33 USHORT Index = (ULONG_PTR)hobj & 0xFFFF;
34 PENTRY pentry = &pentHmgr[Index];
35
36 if ((pentry->einfo.pobj == NULL) ||
37 ((LONG_PTR)pentry->einfo.pobj > 0) ||
38 (pentry->FullUnique != (USHORT)((ULONG_PTR)hobj >> 16)))
39 {
40 return FALSE;
41 }
42
43 return TRUE;
44}
45
46BOOL
48 _In_ HGDIOBJ hobj,
50{
51 PENTRY pentHmgr = GdiQueryTable();
52 USHORT Index = (ULONG_PTR)hobj & 0xFFFF;
53 PENTRY pentry = &pentHmgr[Index];
54
55 if ((pentry->einfo.pobj == NULL) ||
56 ((LONG_PTR)pentry->einfo.pobj > 0) ||
57 (pentry->FullUnique != (USHORT)((ULONG_PTR)hobj >> 16)) ||
58 (pentry->Objt != (UCHAR)(ObjectType >> 16)) ||
59 (pentry->Flags != (UCHAR)(ObjectType >> 24)))
60 {
61 return FALSE;
62 }
63
64 return TRUE;
65}
66
69 _In_ HGDIOBJ hobj)
70{
71 PENTRY pentHmgr = GdiQueryTable();
72 USHORT Index = (ULONG_PTR)hobj;
73 PENTRY pentry = &pentHmgr[Index];
74
75 if (!GdiIsHandleValid(hobj))
76 {
77 return NULL;
78 }
79
80 return pentry->pUser;
81}
82
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define ULONG_PTR
Definition: config.h:101
unsigned int BOOL
Definition: ntddk_ex.h:94
enum GDILoObjType GDILOOBJTYPE
BOOL GdiIsHandleValidEx(_In_ HGDIOBJ hobj, _In_ GDILOOBJTYPE ObjectType)
Definition: gditools.c:47
PENTRY GdiQueryTable(VOID)
Definition: gditools.c:20
PVOID GdiGetHandleUserData(_In_ HGDIOBJ hobj)
Definition: gditools.c:68
BOOL GdiIsHandleValid(_In_ HGDIOBJ hobj)
Definition: gditools.c:29
#define NtCurrentTeb
ObjectType
Definition: metafile.c:81
#define _In_
Definition: ms_sal.h:308
unsigned short USHORT
Definition: pedump.c:61
Definition: ntgdihdl.h:218
UCHAR Objt
Definition: ntgdihdl.h:236
PVOID pUser
Definition: ntgdihdl.h:238
UCHAR Flags
Definition: ntgdihdl.h:237
union _ENTRY::_EINFO einfo
USHORT FullUnique
Definition: ntgdihdl.h:235
PVOID GdiSharedHandleTable
Definition: ntddk_ex.h:292
Definition: compat.h:836
PPEB ProcessEnvironmentBlock
Definition: ntddk_ex.h:337
#define LONG_PTR
Definition: treelist.c:79
uint32_t ULONG_PTR
Definition: typedefs.h:65
struct _BASEOBJECT * pobj
Definition: ntgdihdl.h:221
_In_ WDFCOLLECTION _In_ ULONG Index
unsigned char UCHAR
Definition: xmlstorage.h:181