mirror of
https://github.com/reactos/reactos.git
synced 2025-01-03 21:09:19 +00:00
[GDITOOLS]
Add a library with some helper routines for GDI tests svn path=/trunk/; revision=70457
This commit is contained in:
parent
c88949294c
commit
3ef0e98b4b
3 changed files with 107 additions and 0 deletions
5
rostests/apitests/gditools/CMakeLists.txt
Normal file
5
rostests/apitests/gditools/CMakeLists.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/win32ss/include)
|
||||
|
||||
add_library(gditools
|
||||
gditools.c)
|
82
rostests/apitests/gditools/gditools.c
Normal file
82
rostests/apitests/gditools/gditools.c
Normal file
|
@ -0,0 +1,82 @@
|
|||
|
||||
|
||||
/* SDK/DDK/NDK Headers. */
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <wingdi.h>
|
||||
#include <winddi.h>
|
||||
#include <prntfont.h>
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/ntndk.h>
|
||||
|
||||
/* Public Win32K Headers */
|
||||
#include <ntgdityp.h>
|
||||
#include <ntgdi.h>
|
||||
#include <ntgdihdl.h>
|
||||
|
||||
PENTRY
|
||||
GdiQueryTable(
|
||||
VOID)
|
||||
{
|
||||
PTEB pTeb = NtCurrentTeb();
|
||||
PPEB pPeb = pTeb->ProcessEnvironmentBlock;
|
||||
return pPeb->GdiSharedHandleTable;
|
||||
}
|
||||
|
||||
BOOL
|
||||
GdiIsHandleValid(
|
||||
_In_ HGDIOBJ hobj)
|
||||
{
|
||||
PENTRY pentHmgr = GdiQueryTable();
|
||||
USHORT Index = (ULONG_PTR)hobj & 0xFFFF;
|
||||
PENTRY pentry = &pentHmgr[Index];
|
||||
|
||||
if ((pentry->einfo.pobj == NULL) ||
|
||||
((LONG_PTR)pentry->einfo.pobj > 0) ||
|
||||
(pentry->FullUnique != (USHORT)((ULONG_PTR)hobj >> 16)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL
|
||||
GdiIsHandleValidEx(
|
||||
_In_ HGDIOBJ hobj,
|
||||
_In_ GDILOOBJTYPE ObjectType)
|
||||
{
|
||||
PENTRY pentHmgr = GdiQueryTable();
|
||||
USHORT Index = (ULONG_PTR)hobj & 0xFFFF;
|
||||
PENTRY pentry = &pentHmgr[Index];
|
||||
|
||||
if ((pentry->einfo.pobj == NULL) ||
|
||||
((LONG_PTR)pentry->einfo.pobj > 0) ||
|
||||
(pentry->FullUnique != (USHORT)((ULONG_PTR)hobj >> 16)) ||
|
||||
(pentry->Objt != (UCHAR)(ObjectType >> 16)) ||
|
||||
(pentry->Flags != (UCHAR)(ObjectType >> 24)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
PVOID
|
||||
GdiGetHandleUserData(
|
||||
_In_ HGDIOBJ hobj)
|
||||
{
|
||||
PENTRY pentHmgr = GdiQueryTable();
|
||||
USHORT Index = (ULONG_PTR)hobj;
|
||||
PENTRY pentry = &pentHmgr[Index];
|
||||
|
||||
if (!GdiIsHandleValid(hobj))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pentry->pUser;
|
||||
}
|
||||
|
20
rostests/apitests/gditools/gditools.h
Normal file
20
rostests/apitests/gditools/gditools.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
PENTRY
|
||||
GdiQueryTable(
|
||||
VOID);
|
||||
|
||||
BOOL
|
||||
GdiIsHandleValid(
|
||||
_In_ HGDIOBJ hobj);
|
||||
|
||||
BOOL
|
||||
GdiIsHandleValidEx(
|
||||
_In_ HGDIOBJ hobj,
|
||||
_In_ GDILOOBJTYPE ObjectType);
|
||||
|
||||
PVOID
|
||||
GdiGetHandleUserData(
|
||||
_In_ HGDIOBJ hobj);
|
||||
|
Loading…
Reference in a new issue