- rename ASSERT1 to ASSERT

- link to w32kdll instead of implementing all syscalls as stubs. I will remove the rest of the syscall code as soon as our syscall db is more complete
- more TEST -> RTEST
- update w32kdll_ros.def
- add tests for NtGdiEngCreatePalette, NtGdiEnumFontOpen
- Add some gdi handle table code to w32knapi
- header cleanup

svn path=/trunk/; revision=28619
This commit is contained in:
Timo Kreuzer 2007-08-28 15:06:36 +00:00
parent fd255663f3
commit b91657fe81
24 changed files with 243 additions and 250 deletions

View file

@ -1,8 +1,6 @@
#ifndef _APITEST_H #ifndef _APITEST_H
#define _APITEST_H #define _APITEST_H
#define WINVER 0x501
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
@ -84,8 +82,8 @@ typedef struct tagTEST
} \ } \
} }
#undef ASSERT
#define ASSERT1(x) \ #define ASSERT(x) \
if (!(x)) \ if (!(x)) \
{ \ { \
printf("Assertion failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\ printf("Assertion failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\

View file

@ -26,12 +26,12 @@ TESTENTRY TestList[] =
{ L"CreateRectRgn", Test_CreateRectRgn }, { L"CreateRectRgn", Test_CreateRectRgn },
{ L"ExtCreatePen", Test_ExtCreatePen }, { L"ExtCreatePen", Test_ExtCreatePen },
{ L"GetClipRgn", Test_GetClipRgn }, { L"GetClipRgn", Test_GetClipRgn },
{ L"GetObject", Test_GetObject },
{ L"GetStockObject", Test_GetStockObject }, { L"GetStockObject", Test_GetStockObject },
{ L"SetSysColors", Test_SetSysColors }, { L"SetSysColors", Test_SetSysColors },
{ L"SelectObject", Test_SelectObject }, { L"SelectObject", Test_SelectObject },
{ L"SetDCPenColor", Test_SetDCPenColor }, { L"SetDCPenColor", Test_SetDCPenColor },
// { L"SetWorldTransform", Test_SetWorldTransform }, // { L"SetWorldTransform", Test_SetWorldTransform },
{ L"GetObject", Test_GetObject }
}; };
/* The function that gives us the number of tests */ /* The function that gives us the number of tests */

View file

@ -3,9 +3,24 @@
INT INT
Test_GetClipRgn(PTESTINFO pti) Test_GetClipRgn(PTESTINFO pti)
{ {
// HRGN hRgn; HWND hWnd;
HDC hDC;
HRGN hrgn;//, hrgn2;
/* Create a window */
hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
NULL, NULL, g_hInstance, 0);
hDC = GetDC(hWnd);
hrgn = CreateRectRgn(0,0,0,0);
SetLastError(ERROR_SUCCESS);
// TEST(GetClipRgn(hDC)
ReleaseDC(hWnd, hDC);
DestroyWindow(hWnd);
// hRgn = CreateRectRgn(
return APISTATUS_NORMAL; return APISTATUS_NORMAL;
} }

View file

@ -178,21 +178,21 @@ Test_Brush(PTESTINFO pti)
TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_BRUSH, 0, NULL) == sizeof(LOGBRUSH)); TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_BRUSH, 0, NULL) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, sizeof(WORD), NULL) == sizeof(LOGBRUSH)); TEST(GetObject(hBrush, sizeof(WORD), NULL) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, 0, NULL) == sizeof(LOGBRUSH)); TEST(GetObject(hBrush, 0, NULL) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, 5, NULL) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, 5, NULL) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, -5, NULL) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, -5, NULL) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, 0, &logbrush) == 0); RTEST(GetObject(hBrush, 0, &logbrush) == 0);
TEST(logbrush.lbStyle == 0x77777777); RTEST(logbrush.lbStyle == 0x77777777);
TEST(GetObject(hBrush, 5, &logbrush) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, 5, &logbrush) == sizeof(LOGBRUSH));
TEST(logbrush.lbStyle == 0); RTEST(logbrush.lbStyle == 0);
TEST(logbrush.lbColor == 0x77777701); RTEST(logbrush.lbColor == 0x77777701);
TEST(GetObject(hBrush, sizeof(LOGBRUSH), &logbrush) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, sizeof(LOGBRUSH), &logbrush) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, sizeof(LOGBRUSH)+2, &logbrush) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, sizeof(LOGBRUSH)+2, &logbrush) == sizeof(LOGBRUSH));
TEST(GetObject(hBrush, -1, &logbrush) == sizeof(LOGBRUSH)); RTEST(GetObject(hBrush, -1, &logbrush) == sizeof(LOGBRUSH));
// TODO: test all members // TODO: test all members
TEST(GetLastError() == ERROR_SUCCESS); RTEST(GetLastError() == ERROR_SUCCESS);
DeleteObject(hBrush); DeleteObject(hBrush);
return TRUE; return TRUE;
} }
@ -207,21 +207,21 @@ Test_Pen(PTESTINFO pti)
hPen = CreatePen(PS_SOLID, 3, RGB(4,5,6)); hPen = CreatePen(PS_SOLID, 3, RGB(4,5,6));
if (!hPen) return FALSE; if (!hPen) return FALSE;
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN)); RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN)); RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
TEST(GetObject(hPen, sizeof(BITMAP), NULL) == sizeof(LOGPEN)); RTEST(GetObject(hPen, sizeof(BITMAP), NULL) == sizeof(LOGPEN));
TEST(GetObject(hPen, 0, NULL) == sizeof(LOGPEN)); RTEST(GetObject(hPen, 0, NULL) == sizeof(LOGPEN));
TEST(GetObject(hPen, 5, NULL) == sizeof(LOGPEN)); RTEST(GetObject(hPen, 5, NULL) == sizeof(LOGPEN));
TEST(GetObject(hPen, -5, NULL) == sizeof(LOGPEN)); RTEST(GetObject(hPen, -5, NULL) == sizeof(LOGPEN));
TEST(GetObject(hPen, sizeof(LOGPEN), &logpen) == sizeof(LOGPEN)); RTEST(GetObject(hPen, sizeof(LOGPEN), &logpen) == sizeof(LOGPEN));
TEST(GetObject(hPen, sizeof(LOGPEN)-1, &logpen) == 0); RTEST(GetObject(hPen, sizeof(LOGPEN)-1, &logpen) == 0);
TEST(GetObject(hPen, sizeof(LOGPEN)+2, &logpen) == sizeof(LOGPEN)); RTEST(GetObject(hPen, sizeof(LOGPEN)+2, &logpen) == sizeof(LOGPEN));
TEST(GetObject(hPen, 0, &logpen) == 0); RTEST(GetObject(hPen, 0, &logpen) == 0);
TEST(GetObject(hPen, -5, &logpen) == sizeof(LOGPEN)); RTEST(GetObject(hPen, -5, &logpen) == sizeof(LOGPEN));
TEST(GetLastError() == ERROR_SUCCESS); RTEST(GetLastError() == ERROR_SUCCESS);
/* test if the fields are filled correctly */ /* test if the fields are filled correctly */
TEST(logpen.lopnStyle == PS_SOLID); RTEST(logpen.lopnStyle == PS_SOLID);
DeleteObject(hPen); DeleteObject(hPen);
@ -242,8 +242,8 @@ Test_ExtPen(PTESTINFO pti)
} elpUserStyle; } elpUserStyle;
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0); RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0); RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
TEST(GetLastError() == ERROR_INVALID_PARAMETER); TEST(GetLastError() == ERROR_INVALID_PARAMETER);
FillMemory(&extlogpen, sizeof(EXTLOGPEN), 0x77); FillMemory(&extlogpen, sizeof(EXTLOGPEN), 0x77);
@ -252,12 +252,12 @@ Test_ExtPen(PTESTINFO pti)
logbrush.lbHatch = 22; logbrush.lbHatch = 22;
hPen = ExtCreatePen(PS_GEOMETRIC | PS_DASH, 5, &logbrush, 0, NULL); hPen = ExtCreatePen(PS_GEOMETRIC | PS_DASH, 5, &logbrush, 0, NULL);
TEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN); RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN);
TEST(GetObject((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0); RTEST(GetObject((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
TEST(GetObject(hPen, sizeof(EXTLOGPEN), NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD)); RTEST(GetObject(hPen, sizeof(EXTLOGPEN), NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
TEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD)); RTEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
TEST(GetObject((HANDLE)GDI_HANDLE_GET_INDEX(hPen), 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD)); RTEST(GetObject((HANDLE)GDI_HANDLE_GET_INDEX(hPen), 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
TEST(GetObject(hPen, 5, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD)); RTEST(GetObject(hPen, 5, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
RTEST(GetObject(hPen, -5, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD)); RTEST(GetObject(hPen, -5, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
RTEST(GetObject(hPen, 0, &extlogpen) == 0); RTEST(GetObject(hPen, 0, &extlogpen) == 0);
RTEST(GetObject(hPen, 4, &extlogpen) == 0); RTEST(GetObject(hPen, 4, &extlogpen) == 0);

View file

@ -17,7 +17,7 @@ Test_ScrollDC(PTESTINFO pti)
/* Assert that no update region is there */ /* Assert that no update region is there */
hrgn = CreateRectRgn(0,0,0,0); hrgn = CreateRectRgn(0,0,0,0);
ASSERT1(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION); ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
/* Test normal scrolling */ /* Test normal scrolling */
TEST(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE); TEST(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE);

View file

@ -15,7 +15,7 @@ Test_ScrollWindowEx(PTESTINFO pti)
/* Assert that no update region is there */ /* Assert that no update region is there */
hrgn = CreateRectRgn(0,0,0,0); hrgn = CreateRectRgn(0,0,0,0);
ASSERT1(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION); ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0); Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0);
TEST(Result == SIMPLEREGION); TEST(Result == SIMPLEREGION);

View file

@ -10,48 +10,48 @@ LIBRARY w32kdll.dll
EXPORTS EXPORTS
NtGdiAbortDoc@4 NtGdiAbortDoc@4
NtGdiAbortPath@4 NtGdiAbortPath@4
;NtGdiAddFontResourceW@24 NtGdiAddFontResourceW@24
;NtGdiAddRemoteFontToDC@16 NtGdiAddRemoteFontToDC@16
;NtGdiAddFontMemResourceEx@20 NtGdiAddFontMemResourceEx@20
;NtGdiRemoveMergeFont@8 NtGdiRemoveMergeFont@8
;NtGdiAddRemoteMMInstanceToDC@12 NtGdiAddRemoteMMInstanceToDC@12
NtGdiAlphaBlend@48 NtGdiAlphaBlend@48
NtGdiAngleArc@24 NtGdiAngleArc@24
;NtGdiAnyLinkedFonts@0 NtGdiAnyLinkedFonts@0
;NtGdiFontIsLinked@4 NtGdiFontIsLinked@4
NtGdiArcInternal@40 NtGdiArcInternal@40
NtGdiBeginPath@4 NtGdiBeginPath@4
NtGdiBitBlt@44 NtGdiBitBlt@44
NtGdiCancelDC@4 NtGdiCancelDC@4
;NtGdiCheckBitmapBits@32 NtGdiCheckBitmapBits@32
NtGdiCloseFigure@4 NtGdiCloseFigure@4
;NtGdiClearBitmapAttributes@8 NtGdiClearBitmapAttributes@8
;NtGdiClearBrushAttributes@8 NtGdiClearBrushAttributes@8
;NtGdiColorCorrectPalette@24 NtGdiColorCorrectPalette@24
NtGdiCombineRgn@16 NtGdiCombineRgn@16
NtGdiCombineTransform@12 NtGdiCombineTransform@12
;NtGdiComputeXformCoefficients@4 NtGdiComputeXformCoefficients@4
;NtGdiConsoleTextOut@16 NtGdiConsoleTextOut@16
;NtGdiConvertMetafileRect@8 NtGdiConvertMetafileRect@8
NtGdiCreateBitmap@20 NtGdiCreateBitmap@20
NtGdiCreateClientObj@4 NtGdiCreateClientObj@4
NtGdiCreateColorSpace@4 NtGdiCreateColorSpace@4
;NtGdiCreateColorTransform@32 NtGdiCreateColorTransform@32
NtGdiCreateCompatibleBitmap@12 NtGdiCreateCompatibleBitmap@12
NtGdiCreateCompatibleDC@4 NtGdiCreateCompatibleDC@4
NtGdiCreateDIBBrush@24 NtGdiCreateDIBBrush@24
;NtGdiCreateDIBitmapInternal@44 NtGdiCreateDIBitmapInternal@44
NtGdiCreateDIBSection@36 NtGdiCreateDIBSection@36
NtGdiCreateEllipticRgn@16 NtGdiCreateEllipticRgn@16
NtGdiCreateHalftonePalette@4 NtGdiCreateHalftonePalette@4
NtGdiCreateHatchBrushInternal@12 NtGdiCreateHatchBrushInternal@12
;NtGdiCreateMetafileDC@4 NtGdiCreateMetafileDC@4
;NtGdiCreatePaletteInternal@8 NtGdiCreatePaletteInternal@8
NtGdiCreatePatternBrushInternal@12 NtGdiCreatePatternBrushInternal@12
NtGdiCreatePen@16 NtGdiCreatePen@16
NtGdiCreateRectRgn@16 NtGdiCreateRectRgn@16
NtGdiCreateRoundRectRgn@24 NtGdiCreateRoundRectRgn@24
;NtGdiCreateServerMetaFile@24 NtGdiCreateServerMetaFile@24
NtGdiCreateSolidBrush@8 NtGdiCreateSolidBrush@8
NtGdiD3dContextCreate@16 NtGdiD3dContextCreate@16
NtGdiD3dContextDestroy@4 NtGdiD3dContextDestroy@4
@ -109,44 +109,44 @@ NtGdiDdUnlock@8
NtGdiDdUnlockD3D@8 NtGdiDdUnlockD3D@8
NtGdiDdUpdateOverlay@12 NtGdiDdUpdateOverlay@12
NtGdiDdWaitForVerticalBlank@8 NtGdiDdWaitForVerticalBlank@8
;NtGdiDvpCanCreateVideoPort@8 NtGdiDvpCanCreateVideoPort@8
;NtGdiDvpColorControl@8 NtGdiDvpColorControl@8
;NtGdiDvpCreateVideoPort@8 NtGdiDvpCreateVideoPort@8
;NtGdiDvpDestroyVideoPort@8 NtGdiDvpDestroyVideoPort@8
;NtGdiDvpFlipVideoPort@16 NtGdiDvpFlipVideoPort@16
;NtGdiDvpGetVideoPortBandwidth@8 NtGdiDvpGetVideoPortBandwidth@8
;NtGdiDvpGetVideoPortField@8 NtGdiDvpGetVideoPortField@8
;NtGdiDvpGetVideoPortFlipStatus@8 NtGdiDvpGetVideoPortFlipStatus@8
;NtGdiDvpGetVideoPortInputFormats@8 NtGdiDvpGetVideoPortInputFormats@8
;NtGdiDvpGetVideoPortLine@8 NtGdiDvpGetVideoPortLine@8
;NtGdiDvpGetVideoPortOutputFormats@8 NtGdiDvpGetVideoPortOutputFormats@8
;NtGdiDvpGetVideoPortConnectInfo@8 NtGdiDvpGetVideoPortConnectInfo@8
;NtGdiDvpGetVideoSignalStatus@8 NtGdiDvpGetVideoSignalStatus@8
;NtGdiDvpUpdateVideoPort@16 NtGdiDvpUpdateVideoPort@16
;NtGdiDvpWaitForVideoPortSync@8 NtGdiDvpWaitForVideoPortSync@8
;NtGdiDvpAcquireNotification@12 NtGdiDvpAcquireNotification@12
;NtGdiDvpReleaseNotification@8 NtGdiDvpReleaseNotification@8
;NtGdiDxgGenericThunk@24 NtGdiDxgGenericThunk@24
NtGdiDeleteClientObj@4 NtGdiDeleteClientObj@4
NtGdiDeleteColorSpace@4 NtGdiDeleteColorSpace@4
;NtGdiDeleteColorTransform@8 NtGdiDeleteColorTransform@8
NtGdiDeleteObjectApp@4 NtGdiDeleteObjectApp@4
NtGdiDescribePixelFormat@16 NtGdiDescribePixelFormat@16
;NtGdiGetPerBandInfo@8 NtGdiGetPerBandInfo@8
;NtGdiDoBanding@16 NtGdiDoBanding@16
NtGdiDoPalette@24 NtGdiDoPalette@24
NtGdiDrawEscape@16 NtGdiDrawEscape@16
NtGdiEllipse@20 NtGdiEllipse@20
;NtGdiEnableEUDC@4 NtGdiEnableEudc@4
NtGdiEndDoc@4 NtGdiEndDoc@4
NtGdiEndPage@4 NtGdiEndPage@4
NtGdiEndPath@4 NtGdiEndPath@4
;NtGdiEnumFontChunk@20 NtGdiEnumFontChunk@20
;NtGdiEnumFontClose@4 NtGdiEnumFontClose@4
;NtGdiEnumFontOpen@28 NtGdiEnumFontOpen@28
NtGdiEnumObjects@16 NtGdiEnumObjects@16
NtGdiEqualRgn@8 NtGdiEqualRgn@8
;NtGdiEudcLoadUnloadLink@28 NtGdiEudcLoadUnloadLink@28
NtGdiExcludeClipRect@20 NtGdiExcludeClipRect@20
NtGdiExtCreatePen@44 NtGdiExtCreatePen@44
NtGdiExtCreateRegion@12 NtGdiExtCreateRegion@12
@ -154,37 +154,37 @@ NtGdiExtEscape@32
NtGdiExtFloodFill@20 NtGdiExtFloodFill@20
NtGdiExtGetObjectW@12 NtGdiExtGetObjectW@12
NtGdiExtSelectClipRgn@12 NtGdiExtSelectClipRgn@12
;NtGdiExtTextOutW@36 NtGdiExtTextOutW@36
NtGdiFillPath@4 NtGdiFillPath@4
NtGdiFillRgn@12 NtGdiFillRgn@12
NtGdiFlattenPath@4 NtGdiFlattenPath@4
;NtGdiFlushUserBatch@0 NtGdiFlushUserBatch@0
NtGdiFlush@0 NtGdiFlush@0
;NtGdiForceUFIMapping@8 NtGdiForceUFIMapping@8
NtGdiFrameRgn@20 NtGdiFrameRgn@20
;NtGdiFullscreenControl@20 NtGdiFullscreenControl@20
NtGdiGetAndSetDCDword@16 NtGdiGetAndSetDCDword@16
;NtGdiGetAppClipBox@8 NtGdiGetAppClipBox@8
NtGdiGetBitmapBits@12 NtGdiGetBitmapBits@12
NtGdiGetBitmapDimension@8 NtGdiGetBitmapDimension@8
NtGdiGetBoundsRect@12 NtGdiGetBoundsRect@12
;NtGdiGetCharABCWidthsW@24 NtGdiGetCharABCWidthsW@24
;NtGdiGetCharacterPlacementW@24 NtGdiGetCharacterPlacementW@24
NtGdiGetCharSet@4 NtGdiGetCharSet@4
;NtGdiGetCharWidthW@24 NtGdiGetCharWidthW@24
;NtGdiGetCharWidthInfo@8 NtGdiGetCharWidthInfo@8
NtGdiGetColorAdjustment@8 NtGdiGetColorAdjustment@8
;NtGdiGetColorSpaceforBitmap@4 NtGdiGetColorSpaceforBitmap@4
NtGdiGetDCDword@12 NtGdiGetDCDword@12
;NtGdiGetDCforBitmap@4 NtGdiGetDCforBitmap@4
;NtGdiGetDCObject@8 NtGdiGetDCObject@8
NtGdiGetDCPoint@12 NtGdiGetDCPoint@12
NtGdiGetDeviceCaps@8 NtGdiGetDeviceCaps@8
NtGdiGetDeviceGammaRamp@8 NtGdiGetDeviceGammaRamp@8
;NtGdiGetDeviceCapsAll@8 NtGdiGetDeviceCapsAll@8
;NtGdiGetDIBitsInternal@36 NtGdiGetDIBitsInternal@36
;NtGdiGetETM@8 NtGdiGetETM@8
;NtGdiGetEudcTimeStampEx@12 NtGdiGetEudcTimeStampEx@12
NtGdiGetFontData@20 NtGdiGetFontData@20
NtGdiGetFontResourceInfoInternalW@28 NtGdiGetFontResourceInfoInternalW@28
;NtGdiGetGlyphIndicesW@20 ;NtGdiGetGlyphIndicesW@20

View file

@ -1,4 +1,4 @@
<module name="w32kdll_ros" type="win32dll" entrypoint="0" installname="w32kdll_ros.dll"> <module name="w32kdll" type="win32dll" entrypoint="0" installname="w32kdll.dll">
<importlibrary definition="w32kdll_ros.def" /> <importlibrary definition="w32kdll_ros.def" />
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<define name="_WIN32_WINNT">0x0502</define> <define name="_WIN32_WINNT">0x0502</define>

View file

@ -1,22 +1,11 @@
#include "../w32knapi.h" #include "../w32knapi.h"
W32KAPI
HANDLE
APIENTRY
NtGdiDdCreateDirectDrawObject(
IN HDC hdc
)
{
return (HANDLE)Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
}
INT INT
Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti) Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti)
{ {
HANDLE hDirectDraw; HANDLE hDirectDraw;
HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL); HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
ASSERT1(hdc != NULL); ASSERT(hdc != NULL);
/* Test ReactX */ /* Test ReactX */
RTEST(NtGdiDdCreateDirectDrawObject(NULL) == NULL); RTEST(NtGdiDdCreateDirectDrawObject(NULL) == NULL);

View file

@ -15,12 +15,12 @@ Test_NtGdiDdDeleteDirectDrawObject(PTESTINFO pti)
{ {
HANDLE hDirectDraw; HANDLE hDirectDraw;
HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL); HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
ASSERT1(hdc != NULL); ASSERT(hdc != NULL);
/* Test ReactX */ /* Test ReactX */
RTEST(NtGdiDdDeleteDirectDrawObject(NULL) == FALSE); RTEST(NtGdiDdDeleteDirectDrawObject(NULL) == FALSE);
RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL); RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL);
ASSERT1(hDirectDraw != NULL); ASSERT(hDirectDraw != NULL);
RTEST(NtGdiDdDeleteDirectDrawObject(hDirectDraw) == TRUE); RTEST(NtGdiDdDeleteDirectDrawObject(hDirectDraw) == TRUE);
/* Cleanup ReactX setup */ /* Cleanup ReactX setup */

View file

@ -64,10 +64,10 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode); EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL); hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
ASSERT1(hdc != NULL); ASSERT(hdc != NULL);
hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc); hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
ASSERT1(hDirectDraw != NULL); ASSERT(hDirectDraw != NULL);
/* Test ReactX */ /* Test ReactX */
hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc); hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
@ -123,7 +123,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puD3dTextureFormats == NULL); RTEST(puD3dTextureFormats == NULL);
RTEST(puNumFourCC == NULL); RTEST(puNumFourCC == NULL);
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
@ -131,7 +131,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
(pHalInfo->dwSize != sizeof(DD_HALINFO_V4))) (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
{ {
RTEST(pHalInfo->dwSize != sizeof(DD_HALINFO)); RTEST(pHalInfo->dwSize != sizeof(DD_HALINFO));
ASSERT1(pHalInfo->dwSize != sizeof(DD_HALINFO)); ASSERT(pHalInfo->dwSize != sizeof(DD_HALINFO));
} }
if (pHalInfo->dwSize == sizeof(DD_HALINFO)) if (pHalInfo->dwSize == sizeof(DD_HALINFO))
@ -149,7 +149,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(pHalInfo->vmiData.lDisplayPitch == 0x1700; RTEST(pHalInfo->vmiData.lDisplayPitch == 0x1700;
*/ */
RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) ); RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) );
ASSERT1(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT)); ASSERT(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));
/* Fail on 8bit screen deep */ /* Fail on 8bit screen deep */
RTEST(pHalInfo->vmiData.ddpfDisplay.dwFlags == DDPF_RGB); RTEST(pHalInfo->vmiData.ddpfDisplay.dwFlags == DDPF_RGB);
@ -225,7 +225,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puD3dTextureFormats == NULL); RTEST(puD3dTextureFormats == NULL);
RTEST(puNumFourCC == NULL); RTEST(puNumFourCC == NULL);
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
@ -266,7 +266,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
/* We do not retesting DD_HALINFO, instead we compare it */ /* We do not retesting DD_HALINFO, instead we compare it */
RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0); RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
@ -307,7 +307,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
/* We do not retesting DD_HALINFO, instead we compare it */ /* We do not retesting DD_HALINFO, instead we compare it */
RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0); RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
@ -351,7 +351,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
/* We do not retesting DD_HALINFO, instead we compare it */ /* We do not retesting DD_HALINFO, instead we compare it */
RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0); RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
@ -395,7 +395,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
/* We do not retesting DD_HALINFO, instead we compare it */ /* We do not retesting DD_HALINFO, instead we compare it */
RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0); RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
@ -453,7 +453,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puFourCC == NULL); RTEST(puFourCC == NULL);
RTEST(puNumHeaps == NULL); RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL); RTEST(puvmList == NULL);
ASSERT1(pHalInfo != NULL); ASSERT(pHalInfo != NULL);
/* We do not retesting DD_HALINFO, instead we compare it */ /* We do not retesting DD_HALINFO, instead we compare it */
RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0); RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);

View file

@ -1,22 +1,3 @@
#include "../w32knapi.h"
BOOL
STDCALL
NtGdiArcInternal(
ARCTYPE arctype,
HDC hDC,
int LeftRect,
int TopRect,
int RightRect,
int BottomRect,
int XStartArc,
int YStartArc,
int XEndArc,
int YEndArc)
{
return (BOOL)Syscall(L"NtGdiArcInternal", 10, &arctype);
}
INT INT
Test_NtGdiArcInternal(PTESTINFO pti) Test_NtGdiArcInternal(PTESTINFO pti)
{ {

View file

@ -1,19 +1,3 @@
#include "../w32knapi.h"
W32KAPI
HBITMAP
APIENTRY
NtGdiCreateBitmap(
IN INT cx,
IN INT cy,
IN UINT cPlanes,
IN UINT cBPP,
IN OPTIONAL LPBYTE pjInit
)
{
return (HBITMAP)Syscall(L"NtGdiCreateBitmap", 5, &cx);
}
INT INT
Test_NtGdiCreateBitmap_Params(PTESTINFO pti) Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
{ {
@ -66,7 +50,7 @@ Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 0, 1, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 0, 1, NULL)) != NULL);
TEST(GetLastError() == ERROR_SUCCESS); TEST(GetLastError() == ERROR_SUCCESS);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmType == 0); TEST(bitmap.bmType == 0);
TEST(bitmap.bmWidth == 1); TEST(bitmap.bmWidth == 1);
TEST(bitmap.bmHeight == 1); TEST(bitmap.bmHeight == 1);
@ -88,7 +72,7 @@ Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 0, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 0, NULL)) != NULL);
TEST(GetLastError() == ERROR_SUCCESS); TEST(GetLastError() == ERROR_SUCCESS);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmType == 0); TEST(bitmap.bmType == 0);
TEST(bitmap.bmWidth == 1); TEST(bitmap.bmWidth == 1);
TEST(bitmap.bmHeight == 1); TEST(bitmap.bmHeight == 1);
@ -105,32 +89,32 @@ Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
/* Test bad cBPP */ /* Test bad cBPP */
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 3, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 3, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 4); TEST(bitmap.bmBitsPixel == 4);
DeleteObject(hBmp); DeleteObject(hBmp);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 6, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 6, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 8); TEST(bitmap.bmBitsPixel == 8);
DeleteObject(hBmp); DeleteObject(hBmp);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 15, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 15, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 16); TEST(bitmap.bmBitsPixel == 16);
DeleteObject(hBmp); DeleteObject(hBmp);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 17, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 17, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 24); TEST(bitmap.bmBitsPixel == 24);
DeleteObject(hBmp); DeleteObject(hBmp);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 3, 7, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 3, 7, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 24); TEST(bitmap.bmBitsPixel == 24);
DeleteObject(hBmp); DeleteObject(hBmp);
TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 25, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 25, NULL)) != NULL);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmBitsPixel == 32); TEST(bitmap.bmBitsPixel == 32);
DeleteObject(hBmp); DeleteObject(hBmp);
@ -154,7 +138,7 @@ Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
SetLastError(ERROR_SUCCESS); SetLastError(ERROR_SUCCESS);
TEST((hBmp = NtGdiCreateBitmap(5, 7, 2, 4, NULL)) != NULL); TEST((hBmp = NtGdiCreateBitmap(5, 7, 2, 4, NULL)) != NULL);
TEST(GetLastError() == ERROR_SUCCESS); TEST(GetLastError() == ERROR_SUCCESS);
ASSERT1(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP)); ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
TEST(bitmap.bmType == 0); TEST(bitmap.bmType == 0);
TEST(bitmap.bmWidth == 5); TEST(bitmap.bmWidth == 5);
TEST(bitmap.bmHeight == 7); TEST(bitmap.bmHeight == 7);

View file

@ -1,16 +1,3 @@
#include "../w32knapi.h"
W32KAPI
HBITMAP
APIENTRY
NtGdiCreateCompatibleBitmap(
IN HDC hdc,
IN INT cx,
IN INT cy
)
{
return (HBITMAP)Syscall(L"NtGdiCreateCompatibleBitmap", 3, &hdc);
}
INT INT
Test_NtGdiCreateCompatibleBitmap(PTESTINFO pti) Test_NtGdiCreateCompatibleBitmap(PTESTINFO pti)

View file

@ -1,20 +1,3 @@
#include "../w32knapi.h"
W32KAPI
LONG
APIENTRY
NtGdiDoPalette(
IN HPALETTE hpal,
IN WORD iStart,
IN WORD cEntries,
IN PALETTEENTRY *pPalEntries,
IN DWORD iFunc,
IN BOOL bInbound
)
{
return (LONG)Syscall(L"NtGdiDoPalette", 6, &hpal);
}
HPALETTE HPALETTE
CreateTestPalette() CreateTestPalette()
{ {

View file

@ -0,0 +1,33 @@
HPALETTE
APIENTRY
NtGdiEngCreatePalette(
IN ULONG iMode,
IN ULONG cColors,
IN ULONG *pulColors,
IN FLONG flRed,
IN FLONG flGreen,
IN FLONG flBlue)
{
return (HPALETTE)Syscall(L"NtGdiEngCreatePalette", 6, &iMode);
}
INT
Test_NtGdiEngCreatePalette(PTESTINFO pti)
{
HPALETTE hPal;
ULONG Colors[3] = {1,2,3};
PGDI_TABLE_ENTRY pEntry;
hPal = NtGdiEngCreatePalette(PAL_RGB, 3, Colors, 0xff000000, 0x00ff0000, 0x0000ff00);
TEST(hPal != 0);
TEST(GDI_HANDLE_GET_TYPE(hPal) == GDI_OBJECT_TYPE_PALETTE);
pEntry = &GdiHandleTable[GDI_HANDLE_GET_INDEX(hPal)];
TEST(pEntry->KernelData != NULL);
TEST(pEntry->ProcessId == (HANDLE)GetCurrentProcessId());
TEST(pEntry->UserData == 0);
TEST(pEntry->Type == (((UINT)hPal >> 16) | GDI_OBJECT_TYPE_PALETTE));
return APISTATUS_NORMAL;
}

View file

@ -0,0 +1,31 @@
INT
Test_NtGdiEnumFontOpen(PTESTINFO pti)
{
HDC hDC;
ULONG_PTR idEnum;
ULONG ulCount;
PGDI_TABLE_ENTRY pEntry;
hDC = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
// FIXME: We should load the font first
idEnum = NtGdiEnumFontOpen(hDC, 2, 0, 32, L"Courier", ANSI_CHARSET, &ulCount);
ASSERT(idEnum != 0);
/* we should have a gdi handle here */
TEST(GDI_HANDLE_GET_TYPE(idEnum) == GDI_OBJECT_TYPE_ENUMFONT);
pEntry = &GdiHandleTable[GDI_HANDLE_GET_INDEX(idEnum)];
TEST(pEntry->KernelData != NULL);
TEST(pEntry->ProcessId == (HANDLE)GetCurrentProcessId());
TEST(pEntry->UserData == 0);
TEST(pEntry->Type == ((idEnum >> 16) | GDI_OBJECT_TYPE_ENUMFONT));
/* We should not be able to use DeleteObject() on the handle */
TEST(DeleteObject((HGDIOBJ)idEnum) == FALSE);
// FIXME: Close the enum handle
return APISTATUS_NORMAL;
}

View file

@ -1,15 +1,3 @@
#include "../w32knapi.h"
LONG STDCALL
NtGdiGetBitmapBits(
HBITMAP hBitmap,
DWORD Bytes,
IN PBYTE Bits)
{
return (LONG)Syscall(L"NtGdiGetBitmapBits", 3, &hBitmap);
}
INT INT
Test_NtGdiGetBitmapBits(PTESTINFO pti) Test_NtGdiGetBitmapBits(PTESTINFO pti)
{ {

View file

@ -1,17 +1,3 @@
#include "../w32knapi.h"
W32KAPI
INT
APIENTRY
NtGdiGetRandomRgn(
IN HDC hdc,
IN HRGN hrgn,
IN INT iRgn)
{
return (INT)Syscall(L"NtGdiGetRandomRgn", 3, &hdc);
}
INT INT
Test_NtGdiGetRandomRgn(PTESTINFO pti) Test_NtGdiGetRandomRgn(PTESTINFO pti)
{ {
@ -26,7 +12,7 @@ Test_NtGdiGetRandomRgn(PTESTINFO pti)
// UpdateWindow(hWnd); // UpdateWindow(hWnd);
hDC = GetDC(hWnd); hDC = GetDC(hWnd);
ASSERT1(hDC != NULL); ASSERT(hDC != NULL);
hrgn = CreateRectRgn(0,0,0,0); hrgn = CreateRectRgn(0,0,0,0);
hrgn2 = CreateRectRgn(3,3,10,10); hrgn2 = CreateRectRgn(3,3,10,10);

View file

@ -1,15 +1,5 @@
#include "../w32knapi.h" #include "../w32knapi.h"
LONG STDCALL
NtGdiSetBitmapBits(
HBITMAP hBitmap,
DWORD Bytes,
IN PBYTE Bits)
{
return (LONG)Syscall(L"NtGdiSetBitmapBits", 3, &hBitmap);
}
INT INT
Test_NtGdiSetBitmapBits(PTESTINFO pti) Test_NtGdiSetBitmapBits(PTESTINFO pti)
{ {

View file

@ -1,4 +1,4 @@
#include "../apitest.h" #include "w32knapi.h"
/* include the tests */ /* include the tests */
@ -10,6 +10,9 @@
#include "ntgdi/NtGdiCreateBitmap.c" #include "ntgdi/NtGdiCreateBitmap.c"
#include "ntgdi/NtGdiCreateCompatibleBitmap.c" #include "ntgdi/NtGdiCreateCompatibleBitmap.c"
#include "ntgdi/NtGdiDoPalette.c" #include "ntgdi/NtGdiDoPalette.c"
#include "ntgdi/NtGdiEngCreatePalette.c"
//#include "ntgdi/NtGdiEnumFontChunk.c"
#include "ntgdi/NtGdiEnumFontOpen.c"
#include "ntgdi/NtGdiGetBitmapBits.c" #include "ntgdi/NtGdiGetBitmapBits.c"
#include "ntgdi/NtGdiGetRandomRgn.c" #include "ntgdi/NtGdiGetRandomRgn.c"
#include "ntgdi/NtGdiSetBitmapBits.c" #include "ntgdi/NtGdiSetBitmapBits.c"
@ -30,6 +33,9 @@ TESTENTRY TestList[] =
{ L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap }, { L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap },
{ L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap }, { L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap },
{ L"NtGdiDoPalette", Test_NtGdiDoPalette }, { L"NtGdiDoPalette", Test_NtGdiDoPalette },
{ L"NtGdiEngCreatePalette", Test_NtGdiEngCreatePalette },
// { L"NtGdiEnumFontChunk", Test_NtGdiEnumFontChunk },
{ L"NtGdiEnumFontOpen", Test_NtGdiEnumFontOpen },
{ L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits }, { L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },
{ L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn }, { L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn },
{ L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits }, { L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },

View file

@ -2,6 +2,7 @@
HINSTANCE g_hInstance; HINSTANCE g_hInstance;
HMODULE g_hModule = NULL; HMODULE g_hModule = NULL;
PGDI_TABLE_ENTRY GdiHandleTable;
static DWORD STDCALL static DWORD STDCALL
IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam) IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam)
@ -58,6 +59,7 @@ WinMain(HINSTANCE hInstance,
int nCmdShow) int nCmdShow)
{ {
g_hInstance = hInstance; g_hInstance = hInstance;
GDIQUERYPROC GdiQueryHandleTable;
printf("Win32k native API test\n"); printf("Win32k native API test\n");
@ -68,7 +70,18 @@ WinMain(HINSTANCE hInstance,
if (!g_hModule) if (!g_hModule)
{ {
printf("w32kdll.dll not found!\n"); printf("w32kdll.dll not found!\n");
return FALSE; return -1;
}
GdiQueryHandleTable = (GDIQUERYPROC)GetProcAddress(GetModuleHandleW(L"GDI32.DLL"), "GdiQueryTable");
if(!GdiQueryHandleTable)
{
return -1;
}
GdiHandleTable = GdiQueryHandleTable();
if(!GdiHandleTable)
{
return -1;
} }
printf("\n"); printf("\n");

View file

@ -1,10 +1,16 @@
#ifndef _W32KNAPI_H #ifndef _W32KNAPI_H
#define _W32KNAPI_H #define _W32KNAPI_H
#include "../apitest.h" #define WIN32_NO_STATUS
#define NTOS_MODE_USER
#define WINVER 0x501
#include <ddk/winddi.h> #include <windows.h>
#include <ddk/ntddk.h> #include <wingdi.h>
#include <winddi.h>
#include <ntddk.h>
#include <d3dnthal.h>
#include <prntfont.h>
/* Public Win32K Headers */ /* Public Win32K Headers */
#include <win32k/callback.h> #include <win32k/callback.h>
@ -12,12 +18,14 @@
#include <win32k/ntgdityp.h> #include <win32k/ntgdityp.h>
#include <win32k/ntgdihdl.h> #include <win32k/ntgdihdl.h>
#include <ntgdi.h>
#include "../apitest.h"
#define OS_UNSUPPORTED 0 #define OS_UNSUPPORTED 0
#define OS_REACTOS 1 #define OS_REACTOS 1
#define OS_WINDOWS 2 #define OS_WINDOWS 2
#define W32KAPI
typedef struct typedef struct
{ {
LPWSTR lpszFunction; LPWSTR lpszFunction;
@ -25,11 +33,11 @@ typedef struct
INT nParams; INT nParams;
} SYCALL_ENTRY, *PSYSCALL_ENTRY; } SYCALL_ENTRY, *PSYSCALL_ENTRY;
typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void);
extern HINSTANCE g_hInstance; extern HINSTANCE g_hInstance;
extern SYCALL_ENTRY SyscallTable_XP_2600[];
extern SYCALL_ENTRY SyscallTable_2K_2195[];
extern HMODULE g_hModule; extern HMODULE g_hModule;
extern INT g_nOsVer; extern PGDI_TABLE_ENTRY GdiHandleTable;
DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams); DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
BOOL InitOsVersion(); BOOL InitOsVersion();

View file

@ -7,6 +7,7 @@
<library>user32</library> <library>user32</library>
<library>gdi32</library> <library>gdi32</library>
<library>shell32</library> <library>shell32</library>
<library>w32kdll</library>
<file>w32knapi.c</file> <file>w32knapi.c</file>
<file>testlist.c</file> <file>testlist.c</file>
</module> </module>