an API test kit + win32k native API test app.
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 2 Aug 2007 21:42:37 +0000 (21:42 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 2 Aug 2007 21:42:37 +0000 (21:42 +0000)
It does syscalls on ros by linking to w32kdll.dll
On windows it uses syscall tables (only winxp sp2 available atm)

svn path=/trunk/; revision=28106

19 files changed:
rostests/apitests/apitest.c [new file with mode: 0644]
rostests/apitests/apitest.h [new file with mode: 0644]
rostests/apitests/directory.rbuild [new file with mode: 0644]
rostests/apitests/w32kdll/main.c [new file with mode: 0644]
rostests/apitests/w32kdll/w32kdll.def [new file with mode: 0644]
rostests/apitests/w32kdll/w32kdll.rbuild [new file with mode: 0644]
rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c [new file with mode: 0644]
rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c [new file with mode: 0644]
rostests/apitests/w32knapi/testlist.c [new file with mode: 0644]
rostests/apitests/w32knapi/w32knapi.c [new file with mode: 0644]
rostests/apitests/w32knapi/w32knapi.h [new file with mode: 0644]
rostests/apitests/w32knapi/w32knapi.rbuild [new file with mode: 0644]
rostests/apitests/w32knapi/xp-2600.c [new file with mode: 0644]
rostests/directory.rbuild

diff --git a/rostests/apitests/apitest.c b/rostests/apitests/apitest.c
new file mode 100644 (file)
index 0000000..dc7c5bb
--- /dev/null
@@ -0,0 +1,98 @@
+#include "apitest.h"\r
+\r
+void\r
+OutputUsage(LPWSTR pszExe)\r
+{\r
+       printf("\nUsage:\n\n");\r
+       printf("%ls <TestName> - perform individual test\n", pszExe);\r
+       printf("%ls all - perform all tests\n", pszExe);\r
+       printf("%ls status - create api status file\n", pszExe);\r
+       printf("%ls -r ... - perform regression testing\n", pszExe);\r
+       printf("\n");\r
+}\r
+\r
+int\r
+TestMain(LPWSTR pszExe)\r
+{\r
+       INT argc, i, j;\r
+       LPWSTR *argv;\r
+       TESTINFO ti;\r
+       INT opassed, ofailed, orfailed;\r
+       BOOL bAll, bStatus;\r
+\r
+       ti.bRegress = FALSE;\r
+       bAll = FALSE;\r
+       bStatus = FALSE;\r
+       opassed = ofailed = orfailed = 0;\r
+\r
+       argv = CommandLineToArgvW(GetCommandLineW(), &argc);\r
+\r
+       if (argc < 2)\r
+       {\r
+               OutputUsage(pszExe);\r
+               return 0;\r
+       }\r
+\r
+       /* Get options */\r
+       for (i = 1; i < argc; i++)\r
+       {\r
+               if (wcsicmp(argv[i], L"-r") == 0)\r
+               {\r
+                       ti.bRegress = TRUE;\r
+               }\r
+               else if (wcsicmp(argv[i], L"all") == 0)\r
+               {\r
+                       bAll = TRUE;\r
+               }\r
+               else if (wcsicmp(argv[i], L"status") == 0)\r
+               {\r
+                       bAll = TRUE;\r
+                       bStatus = TRUE;\r
+               }\r
+       }\r
+\r
+       if (bStatus)\r
+       {\r
+               printf("Output of API status is unimplemented.\n");\r
+               return 0;\r
+       }\r
+\r
+       for (i = 0; i < NumTests(); i++)\r
+       {\r
+               for (j = 1; j < argc; j++)\r
+               {\r
+                       if (bAll || wcsicmp(argv[j], TestList[i].Test) == 0)\r
+                       {\r
+                               ti.passed = 0;\r
+                               ti.failed = 0;\r
+                               ti.rfailed = 0;\r
+                               if (!IsFunctionPresent(TestList[i].Test))\r
+                               {\r
+                                       printf("Function %ls was not found!\n", TestList[i].Test);\r
+                               }\r
+                               else\r
+                               {\r
+                                       printf("Executing test: %ls\n", TestList[i].Test);\r
+                                       TestList[i].Proc(&ti);\r
+                                       opassed += ti.passed;\r
+                                       ofailed += ti.failed;\r
+                                       orfailed += ti.rfailed;\r
+                                       printf(" tests: %d, passed: %d, failed: %d\n\n", ti.passed+ti.failed, ti.passed, ti.failed);\r
+                               }\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+\r
+       printf("Overall:\n");\r
+       printf(" tests: %d, passed: %d, failed: %d\n\n", opassed+ofailed, opassed, ofailed);\r
+       if (ti.bRegress)\r
+       {\r
+               printf(" regressions: %d\n", orfailed);\r
+       }\r
+\r
+       if (ti.bRegress)\r
+               return ti.rfailed;\r
+\r
+       return ti.failed;\r
+}\r
diff --git a/rostests/apitests/apitest.h b/rostests/apitests/apitest.h
new file mode 100644 (file)
index 0000000..0e58aad
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _APITEST_H\r
+#define _APITEST_H\r
+\r
+#define WINVER 0x501\r
+\r
+#include <stdlib.h>\r
+\r
+#include <stdarg.h>\r
+#include <stdio.h>\r
+#include <windows.h>\r
+\r
+\r
+/* type definitions */\r
+\r
+typedef struct tagTESTINFO\r
+{\r
+       INT passed;\r
+       INT failed;\r
+       INT rfailed;\r
+       BOOL bRegress;\r
+} TESTINFO, *PTESTINFO;\r
+\r
+typedef BOOL (*TESTPROC)(PTESTINFO);\r
+\r
+typedef struct tagTEST\r
+{\r
+       WCHAR* Test;\r
+       TESTPROC Proc;\r
+} TESTENTRY, *PTESTENTRY;\r
+\r
+\r
+/* macros */\r
+\r
+#define TEST(x) \\r
+       if (pti->bRegress) \\r
+       { \\r
+               if (x)\\r
+               {\\r
+                       (pti->passed)++;\\r
+                       printf("non-rtest succeeded in %s:%d (%s)\n", __FILE__, __LINE__, #x);\\r
+               } else {\\r
+                       (pti->failed)++;\\r
+               } \\r
+       } \\r
+       else \\r
+       { \\r
+               if (x)\\r
+               {\\r
+                       (pti->passed)++;\\r
+               } else {\\r
+                       (pti->failed)++;\\r
+                       printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\\r
+               } \\r
+       }\r
+\r
+#define RTEST(x) \\r
+       if (pti->bRegress) \\r
+       { \\r
+               if (x)\\r
+               {\\r
+                       (pti->passed)++;\\r
+               } else {\\r
+                       (pti->failed)++;\\r
+                       (pti->rfailed)++;\\r
+                       printf("rtest failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\\r
+               } \\r
+       } \\r
+       else \\r
+       { \\r
+               if (x)\\r
+               {\\r
+                       (pti->passed)++;\\r
+               } else {\\r
+                       (pti->failed)++;\\r
+                       printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\\r
+               } \\r
+       }\r
+\r
+\r
+int TestMain(LPWSTR pszExe);\r
+extern TESTENTRY TestList[];\r
+INT NumTests(void);\r
+BOOL IsFunctionPresent(LPWSTR lpszFunction);\r
+\r
+#endif /* _APITEST_H */\r
diff --git a/rostests/apitests/directory.rbuild b/rostests/apitests/directory.rbuild
new file mode 100644 (file)
index 0000000..9fa19d5
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+<directory name="w32kdll">\r
+       <xi:include href="w32kdll/w32kdll.rbuild" />\r
+</directory>\r
+\r
+<directory name="w32knapi">\r
+       <xi:include href="w32knapi/w32knapi.rbuild" />\r
+</directory>\r
diff --git a/rostests/apitests/w32kdll/main.c b/rostests/apitests/w32kdll/main.c
new file mode 100644 (file)
index 0000000..65d2fee
--- /dev/null
@@ -0,0 +1,31 @@
+#include <windows.h>\r
+\r
+#ifdef BUILD_DLL\r
+    #define DLL_EXPORT __declspec(dllexport)\r
+#else\r
+    #define DLL_EXPORT\r
+#endif\r
+\r
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)\r
+{\r
+    switch (fdwReason)\r
+    {\r
+        case DLL_PROCESS_ATTACH:\r
+            // attach to process\r
+            // return FALSE to fail DLL load\r
+            break;\r
+        \r
+        case DLL_PROCESS_DETACH:\r
+            // detach from process\r
+            break;\r
+        \r
+        case DLL_THREAD_ATTACH:\r
+            // attach to thread\r
+            break;\r
+        \r
+        case DLL_THREAD_DETACH:\r
+            // detach from thread\r
+            break;\r
+    }\r
+    return TRUE; // succesful\r
+}\r
diff --git a/rostests/apitests/w32kdll/w32kdll.def b/rostests/apitests/w32kdll/w32kdll.def
new file mode 100644 (file)
index 0000000..f665ca1
--- /dev/null
@@ -0,0 +1,680 @@
+; $Id: w32kdll.def 27344 2007-08-01 14:12:10Z tkreuzer $\r
+;\r
+; ReactOS Operating System\r
+;\r
+; This file contains all win32k native api functions from win xp\r
+; unsupported functions are commented out.\r
+;\r
+LIBRARY w32kdll.dll\r
+\r
+EXPORTS\r
+NtGdiAbortDoc@4\r
+NtGdiAbortPath@4\r
+;NtGdiAddFontResourceW@24\r
+;NtGdiAddRemoteFontToDC@16\r
+;NtGdiAddFontMemResourceEx@20\r
+;NtGdiRemoveMergeFont@8\r
+;NtGdiAddRemoteMMInstanceToDC@12\r
+;NtGdiAlphaBlend@48\r
+NtGdiAngleArc@24\r
+;NtGdiAnyLinkedFonts@0\r
+;GreFontIsLinked@4\r
+NtGdiArcInternal@40\r
+NtGdiBeginPath@4\r
+NtGdiBitBlt@44\r
+NtGdiCancelDC@4\r
+;NtGdiCheckBitmapBits@32\r
+NtGdiCloseFigure@4\r
+;NtGdiClearBitmapAttributes@8\r
+;NtGdiClearBrushAttributes@8\r
+;NtGdiColorCorrectPalette@24\r
+NtGdiCombineRgn@16\r
+NtGdiCombineTransform@12\r
+;NtGdiComputeXformCoefficients@4\r
+;NtGdiConsoleTextOut@16\r
+;NtGdiConvertMetafileRect@8\r
+NtGdiCreateBitmap@20\r
+NtGdiCreateClientObj@4\r
+NtGdiCreateColorSpace@4\r
+;NtGdiCreateColorTransform@32\r
+NtGdiCreateCompatibleBitmap@12\r
+NtGdiCreateCompatibleDC@4\r
+NtGdiCreateDIBBrush@24\r
+;NtGdiCreateDIBitmapInternal@44\r
+NtGdiCreateDIBSection@36\r
+NtGdiCreateEllipticRgn@16\r
+NtGdiCreateHalftonePalette@4\r
+NtGdiCreateHatchBrushInternal@12\r
+;NtGdiCreateMetafileDC@4\r
+;NtGdiCreatePaletteInternal@8\r
+NtGdiCreatePatternBrushInternal@12\r
+NtGdiCreatePen@16\r
+NtGdiCreateRectRgn@16\r
+NtGdiCreateRoundRectRgn@24\r
+;NtGdiCreateServerMetaFile@24\r
+NtGdiCreateSolidBrush@8\r
+NtGdiD3dContextCreate@16\r
+NtGdiD3dContextDestroy@4\r
+;NtGdiD3dContextDestroyAll@4\r
+NtGdiD3dValidateTextureStageState@4\r
+NtGdiD3dDrawPrimitives2@28\r
+NtGdiDdGetDriverState@4\r
+NtGdiDdAddAttachedSurface@12\r
+NtGdiDdAlphaBlt@12\r
+NtGdiDdAttachSurface@8\r
+NtGdiDdBeginMoCompFrame@8\r
+NtGdiDdBlt@12\r
+NtGdiDdCanCreateSurface@8\r
+NtGdiDdCanCreateD3DBuffer@8\r
+NtGdiDdColorControl@8\r
+NtGdiDdCreateDirectDrawObject@4\r
+NtGdiDdCreateSurface@32\r
+NtGdiDdCreateD3DBuffer@32\r
+NtGdiDdCreateMoComp@8\r
+NtGdiDdCreateSurfaceObject@24\r
+NtGdiDdDeleteDirectDrawObject@4\r
+NtGdiDdDeleteSurfaceObject@4\r
+NtGdiDdDestroyMoComp@8\r
+NtGdiDdDestroySurface@8\r
+NtGdiDdDestroyD3DBuffer@4\r
+NtGdiDdEndMoCompFrame@8\r
+NtGdiDdFlip@20\r
+NtGdiDdFlipToGDISurface@8\r
+NtGdiDdGetAvailDriverMemory@8\r
+NtGdiDdGetBltStatus@8\r
+NtGdiDdGetDC@8\r
+NtGdiDdGetDriverInfo@8\r
+NtGdiDdGetDxHandle@12\r
+NtGdiDdGetFlipStatus@8\r
+NtGdiDdGetInternalMoCompInfo@8\r
+NtGdiDdGetMoCompBuffInfo@8\r
+NtGdiDdGetMoCompGuids@8\r
+NtGdiDdGetMoCompFormats@8\r
+NtGdiDdGetScanLine@8\r
+NtGdiDdLock@12\r
+NtGdiDdLockD3D@8\r
+NtGdiDdQueryDirectDrawObject@44\r
+NtGdiDdQueryMoCompStatus@8\r
+NtGdiDdReenableDirectDrawObject@8\r
+NtGdiDdReleaseDC@4\r
+NtGdiDdRenderMoComp@8\r
+NtGdiDdResetVisrgn@8\r
+NtGdiDdSetColorKey@8\r
+NtGdiDdSetExclusiveMode@8\r
+NtGdiDdSetGammaRamp@12\r
+NtGdiDdCreateSurfaceEx@12\r
+NtGdiDdSetOverlayPosition@12\r
+NtGdiDdUnattachSurface@8\r
+NtGdiDdUnlock@8\r
+NtGdiDdUnlockD3D@8\r
+NtGdiDdUpdateOverlay@12\r
+NtGdiDdWaitForVerticalBlank@8\r
+;NtGdiDvpCanCreateVideoPort@8\r
+;NtGdiDvpColorControl@8\r
+;NtGdiDvpCreateVideoPort@8\r
+;NtGdiDvpDestroyVideoPort@8\r
+;NtGdiDvpFlipVideoPort@16\r
+;NtGdiDvpGetVideoPortBandwidth@8\r
+;NtGdiDvpGetVideoPortField@8\r
+;NtGdiDvpGetVideoPortFlipStatus@8\r
+;NtGdiDvpGetVideoPortInputFormats@8\r
+;NtGdiDvpGetVideoPortLine@8\r
+;NtGdiDvpGetVideoPortOutputFormats@8\r
+;NtGdiDvpGetVideoPortConnectInfo@8\r
+;NtGdiDvpGetVideoSignalStatus@8\r
+;NtGdiDvpUpdateVideoPort@16\r
+;NtGdiDvpWaitForVideoPortSync@8\r
+;NtGdiDvpAcquireNotification@12\r
+;NtGdiDvpReleaseNotification@8\r
+;NtGdiDxgGenericThunk@24\r
+NtGdiDeleteClientObj@4\r
+;bDeleteColorSpace@4\r
+;NtGdiDeleteColorTransform@8\r
+NtGdiDeleteObjectApp@4\r
+NtGdiDescribePixelFormat@16\r
+;NtGdiGetPerBandInfo@8\r
+;NtGdiDoBanding@16\r
+;NtGdiDoPalette@24\r
+NtGdiDrawEscape@16\r
+NtGdiEllipse@20\r
+;GreEnableEUDC@4\r
+NtGdiEndDoc@4\r
+NtGdiEndPage@4\r
+NtGdiEndPath@4\r
+;NtGdiEnumFontChunk@20\r
+;NtGdiEnumFontClose@4\r
+;NtGdiEnumFontOpen@28\r
+NtGdiEnumObjects@16\r
+NtGdiEqualRgn@8\r
+;NtGdiEudcLoadUnloadLink@28\r
+NtGdiExcludeClipRect@20\r
+NtGdiExtCreatePen@44\r
+NtGdiExtCreateRegion@12\r
+NtGdiExtEscape@32\r
+NtGdiExtFloodFill@20\r
+NtGdiExtGetObjectW@12\r
+NtGdiExtSelectClipRgn@12\r
+;NtGdiExtTextOutW@36\r
+NtGdiFillPath@4\r
+NtGdiFillRgn@12\r
+NtGdiFlattenPath@4\r
+;NtGdiFlushUserBatch@0\r
+NtGdiFlush@0\r
+;NtGdiForceUFIMapping@8\r
+NtGdiFrameRgn@20\r
+;NtGdiFullscreenControl@20\r
+;NtGdiGetAndSetDCDword@16\r
+;NtGdiGetAppClipBox@8\r
+NtGdiGetBitmapBits@12\r
+;NtGdiGetBitmapDimension@8\r
+NtGdiGetBoundsRect@12\r
+;NtGdiGetCharABCWidthsW@24\r
+;NtGdiGetCharacterPlacementW@24\r
+NtGdiGetCharSet@4\r
+;NtGdiGetCharWidthW@24\r
+;NtGdiGetCharWidthInfo@8\r
+NtGdiGetColorAdjustment@8\r
+;NtGdiGetColorSpaceforBitmap@4\r
+;NtGdiGetDCDword@12\r
+;NtGdiGetDCforBitmap@4\r
+;NtGdiGetDCObject@8\r
+;NtGdiGetDCPoint@12\r
+NtGdiGetDeviceCaps@8\r
+NtGdiGetDeviceGammaRamp@8\r
+;NtGdiGetDeviceCapsAll@8\r
+;NtGdiGetDIBitsInternal@36\r
+;NtGdiGetETM@8\r
+;NtGdiGetEudcTimeStampEx@12\r
+NtGdiGetFontData@20\r
+NtGdiGetFontResourceInfoInternalW@28\r
+;NtGdiGetGlyphIndicesW@20\r
+;NtGdiGetGlyphIndicesWInternal@24\r
+NtGdiGetGlyphOutline@32\r
+NtGdiGetKerningPairs@12\r
+;NtGdiGetLinkedUFIs@12\r
+NtGdiGetMiterLimit@8\r
+;NtGdiGetMonitorID@12\r
+NtGdiGetNearestColor@8\r
+NtGdiGetNearestPaletteIndex@8\r
+;NtGdiGetObjectBitmapHandle@8\r
+NtGdiGetOutlineTextMetricsInternalW@16\r
+NtGdiGetPath@16\r
+NtGdiGetPixel@12\r
+NtGdiGetRandomRgn@12\r
+NtGdiGetRasterizerCaps@8\r
+;NtGdiGetRealizationInfo@12\r
+NtGdiGetRegionData@12\r
+NtGdiGetRgnBox@8\r
+;NtGdiGetServerMetaFileBits@28\r
+;NtGdiGetSpoolMessage@16\r
+;NtGdiGetStats@20\r
+NtGdiGetStockObject@4\r
+;NtGdiGetStringBitmapW@20\r
+NtGdiGetSystemPaletteUse@4\r
+NtGdiGetTextCharsetInfo@12\r
+NtGdiGetTextExtent@20\r
+NtGdiGetTextExtentExW@32\r
+NtGdiGetTextFaceW@16\r
+NtGdiGetTextMetricsW@12\r
+;NtGdiGetTransform@12\r
+;NtGdiGetUFI@24\r
+;NtGdiGetEmbUFI@28\r
+;NtGdiGetUFIPathname@40\r
+;GreGetEmbedFonts@0\r
+;NtGdiChangeGhostFont@8\r
+;NtGdiAddEmbFontToDC@8\r
+;NtGdiGetFontUnicodeRanges@8\r
+;NtGdiGetWidthTable@28\r
+NtGdiGradientFill@24\r
+NtGdiHfontCreate@20\r
+;NtGdiIcmBrushInfo@32\r
+;NtGdiInit@0\r
+;NtGdiInitSpool@0\r
+NtGdiIntersectClipRect@20\r
+NtGdiInvertRgn@8\r
+NtGdiLineTo@12\r
+;NtGdiMakeFontDir@20\r
+;NtGdiMakeInfoDC@8\r
+NtGdiMaskBlt@52\r
+NtGdiModifyWorldTransform@12\r
+;NtGdiMonoBitmap@4\r
+;NtGdiMoveTo@16\r
+NtGdiOffsetClipRgn@12\r
+NtGdiOffsetRgn@12\r
+NtGdiOpenDCW@28\r
+NtGdiPatBlt@24\r
+NtGdiPolyPatBlt@20\r
+NtGdiPathToRegion@4\r
+NtGdiPlgBlt@44\r
+NtGdiPolyDraw@16\r
+NtGdiPolyPolyDraw@20\r
+;NtGdiPolyTextOutW@16\r
+NtGdiPtInRegion@12\r
+NtGdiPtVisible@12\r
+;NtGdiQueryFonts@12\r
+;NtGdiQueryFontAssocInfo@4\r
+NtGdiRectangle@20\r
+NtGdiRectInRegion@8\r
+NtGdiRectVisible@8\r
+;NtGdiRemoveFontResourceW@24\r
+;NtGdiRemoveFontMemResourceEx@4\r
+NtGdiResetDC@20\r
+NtGdiResizePalette@8\r
+NtGdiRestoreDC@8\r
+NtGdiRoundRect@28\r
+NtGdiSaveDC@4\r
+NtGdiScaleViewportExtEx@24\r
+NtGdiScaleWindowExtEx@24\r
+;NtGdiSelectBitmap@8\r
+;GreSelectBitmap@8\r
+;NtGdiSelectBrush@8\r
+NtGdiSelectClipPath@8\r
+;NtGdiSelectFont@8\r
+;NtGdiSelectPen@8\r
+;NtGdiSetBitmapAttributes@8\r
+NtGdiSetBitmapBits@12\r
+;NtGdiSetBitmapDimension@16\r
+NtGdiSetBoundsRect@12\r
+;NtGdiSetBrushAttributes@8\r
+;NtGdiSetBrushOrg@16\r
+NtGdiSetColorAdjustment@8\r
+NtGdiSetColorSpace@8\r
+NtGdiSetDeviceGammaRamp@8\r
+;NtGdiSetDIBitsToDeviceInternal@40\r
+;NtGdiSetFontEnumeration@4\r
+;NtGdiSetFontXform@12\r
+;NtGdiSetIcmMode@12\r
+;NtGdiSetLinkedUFIs@12\r
+;NtGdiSetMagicColors@12\r
+NtGdiSetMetaRgn@4\r
+NtGdiSetMiterLimit@12\r
+;NtGdiGetDeviceWidth@4\r
+;NtGdiMirrorWindowOrg@4\r
+;NtGdiSetLayout@12\r
+NtGdiSetPixel@16\r
+NtGdiSetPixelFormat@8\r
+NtGdiSetRectRgn@20\r
+NtGdiSetSystemPaletteUse@8\r
+NtGdiSetTextJustification@12\r
+;NtGdiSetupPublicCFONT@12\r
+;NtGdiSetVirtualResolution@20\r
+;NtGdiSetSizeDevice@12\r
+NtGdiStartDoc@16\r
+NtGdiStartPage@4\r
+NtGdiStretchBlt@48\r
+;NtGdiStretchDIBitsInternal@40\r
+NtGdiStrokeAndFillPath@4\r
+NtGdiStrokePath@4\r
+NtGdiSwapBuffers@4\r
+;NtGdiTransformPoints@20\r
+NtGdiTransparentBlt@44\r
+;NtGdiUnloadPrinterDriver@8\r
+;NtGdiUMPDEngFreeUserMem@4\r
+;NtGdiUnmapMemFont@4\r
+NtGdiUnrealizeObject@4\r
+NtGdiUpdateColors@4\r
+NtGdiWidenPath@4\r
+NtUserActivateKeyboardLayout@8\r
+NtUserAlterWindowStyle@12\r
+;NtUserAssociateInputContext@12\r
+NtUserAttachThreadInput@12\r
+NtUserBeginPaint@8\r
+NtUserBitBltSysBmp@32\r
+NtUserBlockInput@4\r
+;NtUserBuildHimcList@16\r
+NtUserBuildHwndList@28\r
+NtUserBuildNameList@16\r
+NtUserBuildPropList@16\r
+NtUserCallHwnd@8\r
+NtUserCallHwndLock@8\r
+NtUserCallHwndOpt@8\r
+NtUserCallHwndParam@12\r
+NtUserCallHwndParamLock@12\r
+NtUserCallMsgFilter@8\r
+NtUserCallNextHookEx@16\r
+NtUserCallNoParam@4\r
+NtUserCallOneParam@8\r
+NtUserCallTwoParam@12\r
+NtUserChangeClipboardChain@8\r
+NtUserChangeDisplaySettings@20\r
+;NtUserCheckImeHotKey@8\r
+NtUserCheckMenuItem@12\r
+NtUserChildWindowFromPointEx@16\r
+NtUserClipCursor@4\r
+NtUserCloseClipboard@0\r
+NtUserCloseDesktop@4\r
+NtUserCloseWindowStation@4\r
+;NtUserConsoleControl@12\r
+NtUserConvertMemHandle@8\r
+NtUserCopyAcceleratorTable@12\r
+NtUserCountClipboardFormats@0\r
+NtUserCreateAcceleratorTable@8\r
+NtUserCreateCaret@16\r
+NtUserCreateDesktop@20\r
+;NtUserCreateInputContext@4\r
+NtUserCreateLocalMemHandle@16\r
+;NtUserCreateWindowEx@60\r
+;NtUserCreateWindowStation@28\r
+NtUserDdeGetQualityOfService@12\r
+NtUserDdeInitialize@20\r
+NtUserDdeSetQualityOfService@12\r
+NtUserDeferWindowPos@32\r
+NtUserDefSetText@8\r
+;NtUserDeleteMenu@12\r
+NtUserDestroyAcceleratorTable@4\r
+;NtUserDestroyCursor@8\r
+;NtUserDestroyInputContext@4\r
+NtUserDestroyMenu@4\r
+NtUserDestroyWindow@4\r
+;NtUserDisableThreadIme@4\r
+NtUserDispatchMessage@4\r
+NtUserDragDetect@12\r
+NtUserDragObject@20\r
+NtUserDrawAnimatedRects@16\r
+NtUserDrawCaption@16\r
+NtUserDrawCaptionTemp@28\r
+NtUserDrawIconEx@44\r
+NtUserDrawMenuBarTemp@20\r
+NtUserEmptyClipboard@0\r
+NtUserEnableMenuItem@12\r
+NtUserEnableScrollBar@12\r
+NtUserEndDeferWindowPosEx@8\r
+NtUserEndMenu@0\r
+NtUserEndPaint@8\r
+NtUserEnumDisplayDevices@16\r
+;NtUserEnumDisplayMonitors@16\r
+NtUserEnumDisplaySettings@16\r
+NtUserEvent@4\r
+NtUserExcludeUpdateRgn@8\r
+NtUserFillWindow@16\r
+;NtUserFindExistingCursorIcon@12\r
+;NtUserFindWindowEx@20\r
+NtUserFlashWindowEx@4\r
+NtUserGetAltTabInfo@24\r
+NtUserGetAncestor@8\r
+;NtUserGetAppImeLevel@4\r
+NtUserGetAsyncKeyState@4\r
+;NtUserGetAtomName@8\r
+NtUserGetCaretBlinkTime@0\r
+NtUserGetCaretPos@4\r
+;NtUserGetClassInfo@20\r
+NtUserGetClassName@12\r
+NtUserGetClipboardData@8\r
+NtUserGetClipboardFormatName@12\r
+NtUserGetClipboardOwner@0\r
+NtUserGetClipboardSequenceNumber@0\r
+NtUserGetClipboardViewer@0\r
+NtUserGetClipCursor@4\r
+NtUserGetComboBoxInfo@8\r
+NtUserGetControlBrush@12\r
+NtUserGetControlColor@16\r
+NtUserGetCPD@12\r
+NtUserGetCursorFrameInfo@16\r
+NtUserGetCursorInfo@4\r
+NtUserGetDC@4\r
+NtUserGetDCEx@12\r
+NtUserGetDoubleClickTime@0\r
+NtUserGetForegroundWindow@0\r
+NtUserGetGuiResources@8\r
+NtUserGetGUIThreadInfo@8\r
+;NtUserGetIconInfo@24\r
+;NtUserGetIconSize@16\r
+NtUserGetImeHotKey@16\r
+;NtUserGetImeInfoEx@8\r
+NtUserGetInternalWindowPos@12\r
+NtUserGetKeyboardLayoutList@8\r
+NtUserGetKeyboardLayoutName@4\r
+NtUserGetKeyboardState@4\r
+NtUserGetKeyNameText@12\r
+NtUserGetKeyState@4\r
+NtUserGetListBoxInfo@4\r
+NtUserGetMenuBarInfo@16\r
+NtUserGetMenuIndex@8\r
+NtUserGetMenuItemRect@16\r
+NtUserGetMessage@16\r
+NtUserGetMouseMovePointsEx@20\r
+NtUserGetObjectInformation@20\r
+NtUserGetOpenClipboardWindow@0\r
+NtUserGetPriorityClipboardFormat@8\r
+NtUserGetProcessWindowStation@0\r
+;NtUserGetRawInputBuffer@12\r
+;NtUserGetRawInputData@20\r
+;NtUserGetRawInputDeviceInfo@16\r
+;NtUserGetRawInputDeviceList@12\r
+;NtUserGetRegisteredRawInputDevices@12\r
+NtUserGetScrollBarInfo@12\r
+NtUserGetSystemMenu@8\r
+NtUserGetThreadDesktop@8\r
+NtUserGetThreadState@4\r
+NtUserGetTitleBarInfo@8\r
+NtUserGetUpdateRect@12\r
+NtUserGetUpdateRgn@12\r
+NtUserGetWindowDC@4\r
+NtUserGetWindowPlacement@8\r
+NtUserGetWOWClass@8\r
+;NtUserHardErrorControl@12\r
+NtUserHideCaret@4\r
+NtUserHiliteMenuItem@16\r
+NtUserImpersonateDdeClientWindow@8\r
+;NtUserInitialize@12\r
+NtUserInitializeClientPfnArrays@16\r
+;NtUserInitTask@48\r
+NtUserInternalGetWindowText@12\r
+NtUserInvalidateRect@12\r
+NtUserInvalidateRgn@12\r
+NtUserIsClipboardFormatAvailable@4\r
+NtUserKillTimer@8\r
+;NtUserLoadKeyboardLayoutEx@28\r
+NtUserLockWindowStation@4\r
+NtUserLockWindowUpdate@4\r
+NtUserLockWorkStation@0\r
+NtUserMapVirtualKeyEx@16\r
+NtUserMenuItemFromPoint@16\r
+NtUserMessageCall@28\r
+;NtUserMinMaximize@12\r
+NtUserMNDragLeave@0\r
+NtUserMNDragOver@8\r
+NtUserModifyUserStartupInfoFlags@8\r
+NtUserMoveWindow@24\r
+NtUserNotifyIMEStatus@12\r
+;NtUserNotifyProcessCreate@16\r
+NtUserNotifyWinEvent@16\r
+NtUserOpenClipboard@8\r
+NtUserOpenDesktop@12\r
+NtUserOpenInputDesktop@12\r
+NtUserOpenWindowStation@8\r
+NtUserPaintDesktop@4\r
+NtUserPeekMessage@20\r
+NtUserPostMessage@16\r
+NtUserPostThreadMessage@16\r
+;NtUserPrintWindow@12\r
+;NtUserProcessConnect@12\r
+;NtUserQueryInformationThread@20\r
+;NtUserQueryInputContext@8\r
+NtUserQuerySendMessage@4\r
+NtUserQueryUserCounters@20\r
+NtUserQueryWindow@8\r
+NtUserRealChildWindowFromPoint@12\r
+;NtUserRealInternalGetMessage@24\r
+;NtUserRealWaitMessageEx@8\r
+NtUserRedrawWindow@16\r
+;NtUserRegisterClassExWOW@28\r
+;NtUserRegisterUserApiHook@8\r
+NtUserRegisterHotKey@16\r
+;NtUserRegisterRawInputDevices@12\r
+NtUserRegisterTasklist@4\r
+NtUserRegisterWindowMessage@4\r
+NtUserRemoveMenu@12\r
+NtUserRemoveProp@8\r
+;NtUserResolveDesktop@16\r
+NtUserResolveDesktopForWOW@4\r
+NtUserSBGetParms@16\r
+NtUserScrollDC@28\r
+NtUserScrollWindowEx@32\r
+;NtUserSelectPalette@12\r
+NtUserSendInput@12\r
+NtUserSetActiveWindow@4\r
+;NtUserSetAppImeLevel@8\r
+NtUserSetCapture@4\r
+NtUserSetClassLong@16\r
+NtUserSetClassWord@12\r
+NtUserSetClipboardData@12\r
+NtUserSetClipboardViewer@4\r
+NtUserSetConsoleReserveKeys@8\r
+NtUserSetCursor@4\r
+;NtUserSetCursorContents@8\r
+;NtUserSetCursorIconData@16\r
+NtUserSetDbgTag@8\r
+NtUserSetFocus@4\r
+NtUserSetImeHotKey@20\r
+;NtUserSetImeInfoEx@4\r
+NtUserSetImeOwnerWindow@8\r
+;NtUserSetInformationProcess@16\r
+;NtUserSetInformationThread@16\r
+NtUserSetInternalWindowPos@16\r
+NtUserSetKeyboardState@4\r
+NtUserSetLogonNotifyWindow@4\r
+NtUserSetMenu@12\r
+NtUserSetMenuContextHelpId@8\r
+NtUserSetMenuDefaultItem@12\r
+NtUserSetMenuFlagRtoL@4\r
+NtUserSetObjectInformation@16\r
+NtUserSetParent@8\r
+NtUserSetProcessWindowStation@4\r
+NtUserSetProp@12\r
+NtUserSetRipFlags@8\r
+NtUserSetScrollInfo@16\r
+NtUserSetShellWindowEx@8\r
+NtUserSetSysColors@16\r
+NtUserSetSystemCursor@8\r
+NtUserSetSystemMenu@8\r
+NtUserSetSystemTimer@16\r
+NtUserSetThreadDesktop@4\r
+;NtUserSetThreadLayoutHandles@8\r
+NtUserSetThreadState@8\r
+NtUserSetTimer@16\r
+NtUserSetWindowFNID@8\r
+NtUserSetWindowLong@16\r
+NtUserSetWindowPlacement@8\r
+NtUserSetWindowPos@28\r
+NtUserSetWindowRgn@12\r
+NtUserSetWindowsHookAW@12\r
+NtUserSetWindowsHookEx@24\r
+NtUserSetWindowStationUser@16\r
+NtUserSetWindowWord@12\r
+NtUserSetWinEventHook@32\r
+NtUserShowCaret@4\r
+NtUserShowScrollBar@12\r
+NtUserShowWindow@8\r
+NtUserShowWindowAsync@8\r
+;NtUserSoundSentry@0\r
+NtUserSwitchDesktop@4\r
+NtUserSystemParametersInfo@16\r
+;NtUserTestForInteractiveUser@4\r
+NtUserThunkedMenuInfo@8\r
+NtUserThunkedMenuItemInfo@24\r
+NtUserToUnicodeEx@28\r
+NtUserTrackMouseEvent@4\r
+NtUserTrackPopupMenuEx@24\r
+;NtUserCalcMenuBar@20\r
+;NtUserPaintMenuBar@24\r
+NtUserTranslateAccelerator@12\r
+NtUserTranslateMessage@8\r
+NtUserUnhookWindowsHookEx@4\r
+NtUserUnhookWinEvent@4\r
+NtUserUnloadKeyboardLayout@4\r
+NtUserUnlockWindowStation@4\r
+;NtUserUnregisterClass@12\r
+;NtUserUnregisterUserApiHook@0\r
+NtUserUnregisterHotKey@8\r
+NtUserUpdateInputContext@12\r
+NtUserUpdateInstance@12\r
+NtUserUpdateLayeredWindow@36\r
+;NtUserGetLayeredWindowAttributes@16\r
+NtUserSetLayeredWindowAttributes@16\r
+NtUserUpdatePerUserSystemParameters@8\r
+NtUserUserHandleGrantAccess@12\r
+NtUserValidateHandleSecure@4\r
+;NtUserValidateRect@8\r
+NtUserVkKeyScanEx@12\r
+;NtUserWaitForInputIdle@12\r
+NtUserWaitForMsgAndEvent@4\r
+NtUserWaitMessage@0\r
+NtUserWin32PoolAllocationStats@24\r
+NtUserWindowFromPoint@8\r
+NtUserYieldTask@0\r
+;NtUserRemoteConnect@12\r
+;NtUserRemoteRedrawRectangle@16\r
+;NtUserRemoteRedrawScreen@0\r
+;NtUserRemoteStopScreenUpdates@0\r
+;NtUserCtxDisplayIOCtl@12\r
+;NtGdiEngAssociateSurface@12\r
+;NtGdiEngCreateBitmap@24\r
+;NtGdiEngCreateDeviceSurface@16\r
+;NtGdiEngCreateDeviceBitmap@16\r
+;NtGdiEngCreatePalette@24\r
+;NtGdiEngComputeGlyphSet@12\r
+;NtGdiEngCopyBits@24\r
+;NtGdiEngDeletePalette@4\r
+;NtGdiEngDeleteSurface@4\r
+;NtGdiEngEraseSurface@12\r
+;NtGdiEngUnlockSurface@4\r
+;NtGdiEngLockSurface@4\r
+;NtGdiEngBitBlt@44\r
+;NtGdiEngStretchBlt@44\r
+;NtGdiEngPlgBlt@44\r
+;NtGdiEngMarkBandingSurface@4\r
+;NtGdiEngStrokePath@32\r
+;NtGdiEngFillPath@28\r
+;NtGdiEngStrokeAndFillPath@40\r
+;NtGdiEngPaint@20\r
+;NtGdiEngLineTo@36\r
+;NtGdiEngAlphaBlend@28\r
+;NtGdiEngGradientFill@40\r
+;NtGdiEngTransparentBlt@32\r
+;NtGdiEngTextOut@40\r
+;NtGdiEngStretchBltROP@52\r
+;NtGdiXLATEOBJ_cGetPalette@16\r
+;NtGdiXLATEOBJ_iXlate@8\r
+;NtGdiXLATEOBJ_hGetColorTransform@4\r
+;NtGdiCLIPOBJ_bEnum@12\r
+;NtGdiCLIPOBJ_cEnumStart@20\r
+;NtGdiCLIPOBJ_ppoGetPath@4\r
+;NtGdiEngDeletePath@4\r
+;NtGdiEngCreateClip@0\r
+;NtGdiEngDeleteClip@4\r
+;NtGdiBRUSHOBJ_ulGetBrushColor@4\r
+;NtGdiBRUSHOBJ_pvAllocRbrush@8\r
+;NtGdiBRUSHOBJ_pvGetRbrush@4\r
+;NtGdiBRUSHOBJ_hGetColorTransform@4\r
+;NtGdiXFORMOBJ_bApplyXform@20\r
+;NtGdiXFORMOBJ_iGetXform@8\r
+;NtGdiFONTOBJ_vGetInfo@12\r
+;NtGdiFONTOBJ_pxoGetXform@4\r
+;NtGdiFONTOBJ_cGetGlyphs@20\r
+;NtGdiFONTOBJ_pifi@4\r
+;NtGdiFONTOBJ_pfdg@4\r
+;NtGdiFONTOBJ_pQueryGlyphAttrs@8\r
+;NtGdiFONTOBJ_pvTrueTypeFontFile@8\r
+;NtGdiFONTOBJ_cGetAllGlyphHandles@8\r
+;NtGdiSTROBJ_bEnum@12\r
+;NtGdiSTROBJ_bEnumPositionsOnly@12\r
+;NtGdiSTROBJ_bGetAdvanceWidths@16\r
+;NtGdiSTROBJ_vEnumStart@4\r
+;NtGdiSTROBJ_dwGetCodePage@4\r
+;NtGdiPATHOBJ_vGetBounds@8\r
+;NtGdiPATHOBJ_bEnum@8\r
+;NtGdiPATHOBJ_vEnumStart@4\r
+;NtGdiPATHOBJ_vEnumStartClipLines@16\r
+;NtGdiPATHOBJ_bEnumClipLines@12\r
+;NtGdiGetDhpdev@4\r
+;NtGdiEngCheckAbort@4\r
+;NtGdiHT_Get8BPPFormatPalette@16\r
+;NtGdiHT_Get8BPPMaskPalette@24\r
+;NtGdiUpdateTransform@4\r
+;NtGdiSetPUMPDOBJ@16\r
+;NtGdiBRUSHOBJ_DeleteRbrush@8\r
+;NtGdiUMPDEngFreeUserMem@4\r
+;NtGdiUnmapMemFont@4\r
+;NtGdiDrawStream@12\r
+\r
diff --git a/rostests/apitests/w32kdll/w32kdll.rbuild b/rostests/apitests/w32kdll/w32kdll.rbuild
new file mode 100644 (file)
index 0000000..401a512
--- /dev/null
@@ -0,0 +1,7 @@
+<module name="w32kdll" type="win32dll" entrypoint="0" installname="w32kdll.dll">\r
+       <importlibrary definition="w32kdll.def" />\r
+       <define name="__USE_W32API" />\r
+       <define name="_WIN32_WINNT">0x0502</define>\r
+       <library>win32ksys</library>\r
+       <file>main.c</file>\r
+</module>\r
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
new file mode 100644 (file)
index 0000000..fb0dd6d
--- /dev/null
@@ -0,0 +1,25 @@
+#include "..\w32knapi.h"\r
+\r
+W32KAPI\r
+HANDLE\r
+APIENTRY\r
+NtGdiDdCreateDirectDrawObject(\r
+    IN HDC hdc\r
+)\r
+{\r
+       return (HANDLE)Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);\r
+}\r
+\r
+BOOL\r
+Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti)\r
+{\r
+    HDC hdc=CreateDCW(L"Display",NULL,NULL,NULL);\r
+\r
+    RTEST(NtGdiDdCreateDirectDrawObject(NULL) == NULL);\r
+\r
+    TEST(NtGdiDdCreateDirectDrawObject(hdc) != NULL);\r
+    \r
+    DeleteDC(hdc);\r
+\r
+    return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
new file mode 100644 (file)
index 0000000..7d9dc0e
--- /dev/null
@@ -0,0 +1,19 @@
+#include "..\w32knapi.h"\r
+\r
+W32KAPI\r
+BOOL\r
+APIENTRY\r
+NtGdiDdDeleteDirectDrawObject(\r
+    HANDLE hDirectDrawLocal\r
+)\r
+{\r
+       return (BOOL)Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDrawLocal);\r
+}\r
+\r
+BOOL\r
+Test_NtGdiDdDeleteDirectDrawObject(PTESTINFO pti)\r
+{\r
+    TEST(NtGdiDdDeleteDirectDrawObject(NULL) == 0);\r
+\r
+    return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
new file mode 100644 (file)
index 0000000..3a4e51b
--- /dev/null
@@ -0,0 +1,27 @@
+#include "..\w32knapi.h"\r
+#if 0\r
+W32KAPI\r
+BOOL STDCALL \r
+NtGdiDdQueryDirectDrawObject(\r
+    HANDLE hDirectDrawLocal,\r
+    DD_HALINFO  *pHalInfo,\r
+    DWORD *pCallBackFlags,\r
+    LPD3DNTHAL_CALLBACKS puD3dCallbacks,\r
+    LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,\r
+    PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,\r
+    LPDDSURFACEDESC puD3dTextureFormats,\r
+    DWORD *puNumHeaps,\r
+    VIDEOMEMORY *puvmList,\r
+    DWORD *puNumFourCC,\r
+    DWORD *puFourCC\r
+)\r
+{\r
+       return (HANDLE)Syscall("NtGdiDdQueryDirectDrawObject", 11, &hDirectDrawLocal);\r
+}\r
+#endif\r
+BOOL\r
+Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)\r
+{\r
+\r
+    return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c b/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
new file mode 100644 (file)
index 0000000..5b736f4
--- /dev/null
@@ -0,0 +1,57 @@
+#include "../w32knapi.h"\r
+\r
+typedef int ARCTYPE;\r
+\r
+BOOL\r
+STDCALL\r
+NtGdiArcInternal(\r
+        ARCTYPE arctype,\r
+        HDC  hDC,\r
+        int  LeftRect,\r
+        int  TopRect,\r
+        int  RightRect,\r
+        int  BottomRect,\r
+        int  XStartArc,\r
+        int  YStartArc,\r
+        int  XEndArc,\r
+        int  YEndArc)\r
+{\r
+       return (BOOL)Syscall(L"NtGdiArcInternal", 10, &arctype);\r
+}\r
+\r
+BOOL\r
+Test_NtGdiArcInternal(PTESTINFO pti)\r
+{\r
+       HDC hDC = CreateDCW(L"Display",NULL,NULL,NULL);\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       TEST(NtGdiArcInternal(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);\r
+       TEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);\r
+       TEST(NtGdiArcInternal(1, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);\r
+       TEST(NtGdiArcInternal(2, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);\r
+       TEST(NtGdiArcInternal(3, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);\r
+       TEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       TEST(NtGdiArcInternal(4, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);\r
+       TEST(GetLastError() == ERROR_INVALID_PARAMETER);\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       TEST(NtGdiArcInternal(4, (HDC)10, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);\r
+       TEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       TEST(NtGdiArcInternal(0, hDC, 10, 10, 0, 0, 0, 0, 0, 0) == TRUE);\r
+       TEST(NtGdiArcInternal(0, hDC, 10, 10, -10, -10, 0, 0, 0, 0) == TRUE);\r
+       TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 10, 0, -10, 0) == TRUE);\r
+\r
+// was passiert, wenn left > right ? einfach tauschen?\r
+\r
+\r
+       DeleteDC(hDC);\r
+\r
+       return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c b/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
new file mode 100644 (file)
index 0000000..171fa0b
--- /dev/null
@@ -0,0 +1,74 @@
+#include "../w32knapi.h"\r
+\r
+LONG STDCALL\r
+NtGdiGetBitmapBits(\r
+       HBITMAP  hBitmap,\r
+       DWORD  Bytes,\r
+       IN PBYTE Bits)\r
+{\r
+       return (LONG)Syscall(L"NtGdiGetBitmapBits", 3, &hBitmap);\r
+}\r
+\r
+\r
+BOOL\r
+Test_NtGdiGetBitmapBits(PTESTINFO pti)\r
+{\r
+       BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};\r
+       HBITMAP hBitmap;\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiGetBitmapBits(0, 0, 0) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+\r
+       /* Test NULL bitmap handle */\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiGetBitmapBits(0, 5, Bits) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+\r
+       /* Test invalid bitmap handle */\r
+       hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+       DeleteObject(hBitmap);\r
+\r
+       hBitmap = CreateBitmap(3, 3, 1, 8, NULL);\r
+       SetLastError(ERROR_SUCCESS);\r
+\r
+       /* test NULL pointer and count buffer size != 0 */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 5, NULL) == 12);\r
+\r
+       /* test NULL pointer and buffer size == 0*/\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 0, NULL) == 12);\r
+\r
+       /* test bad pointer */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);\r
+\r
+       /* Test if we can set a number of bytes between lines */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 5);\r
+\r
+       /* Test alignment */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 4, Bits+1) == 4);\r
+\r
+       /* Test 1 byte too much */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 10, Bits) == 10);\r
+\r
+       /* Test one row too much */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 12, Bits) == 12);\r
+\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 13, Bits) == 12);\r
+\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 100, Bits) == 12);\r
+\r
+       /* Test huge bytes count */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, 12345678, Bits) == 12);\r
+\r
+       /* Test negative bytes count */\r
+       RTEST(NtGdiGetBitmapBits(hBitmap, -5, Bits) == 12);\r
+\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       DeleteObject(hBitmap);\r
+\r
+       return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c b/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
new file mode 100644 (file)
index 0000000..9114356
--- /dev/null
@@ -0,0 +1,74 @@
+#include "../w32knapi.h"\r
+\r
+LONG STDCALL\r
+NtGdiSetBitmapBits(\r
+       HBITMAP  hBitmap,\r
+       DWORD  Bytes,\r
+       IN PBYTE Bits)\r
+{\r
+       return (LONG)Syscall(L"NtGdiSetBitmapBits", 3, &hBitmap);\r
+}\r
+\r
+\r
+BOOL\r
+Test_NtGdiSetBitmapBits(PTESTINFO pti)\r
+{\r
+       BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};\r
+       HBITMAP hBitmap;\r
+\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiSetBitmapBits(0, 0, 0) == 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       /* Test NULL bitnap handle */\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiSetBitmapBits(0, 5, Bits) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+\r
+       /* Test invalid bitmap handle */\r
+       hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 0);\r
+       RTEST(GetLastError() == ERROR_INVALID_HANDLE);\r
+       DeleteObject(hBitmap);\r
+\r
+       hBitmap = CreateBitmap(3, 3, 1, 8, NULL);\r
+       SetLastError(ERROR_SUCCESS);\r
+\r
+       /* test NULL pointer and count buffer size != 0 */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 5, NULL) == 0);\r
+\r
+       /* test NULL pointer and buffer size == 0*/\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 0, NULL) == 0);\r
+\r
+       /* test bad pointer */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);\r
+\r
+       /* Test if we can set a number of bytes between lines */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 5);\r
+\r
+       /* Test alignment */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 4, Bits+1) == 4);\r
+\r
+       /* Test 1 byte too much */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 10, Bits) == 10);\r
+\r
+       /* Test one row too much */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 12, Bits) == 12);\r
+\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 13, Bits) == 12);\r
+\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, 100, Bits) == 12);\r
+\r
+       /* Test huge bytes count */\r
+       TEST(NtGdiSetBitmapBits(hBitmap, 12345678, Bits) == 0);\r
+\r
+       /* Test negative bytes count */\r
+       RTEST(NtGdiSetBitmapBits(hBitmap, -5, Bits) == 0);\r
+\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       DeleteObject(hBitmap);\r
+\r
+       return TRUE;\r
+}\r
diff --git a/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c b/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
new file mode 100644 (file)
index 0000000..5cd8fe0
--- /dev/null
@@ -0,0 +1,18 @@
+#include "../w32knapi.h"\r
+\r
+/* First the call stub */\r
+DWORD STDCALL\r
+NtUserCountClipboardFormats(VOID)\r
+{\r
+       DWORD p;\r
+       return Syscall(L"NtUserCountClipboardFormats", 0, &p);\r
+}\r
+\r
+BOOL\r
+Test_NtUserCountClipboardFormats(PTESTINFO pti)\r
+{\r
+       TEST(NtUserCountClipboardFormats() < 1000);\r
+       TEST(TRUE);\r
+       return TRUE;\r
+}\r
+\r
diff --git a/rostests/apitests/w32knapi/testlist.c b/rostests/apitests/w32knapi/testlist.c
new file mode 100644 (file)
index 0000000..7eae1ea
--- /dev/null
@@ -0,0 +1,37 @@
+#include "..\apitest.h"\r
+\r
+/* include the tests */\r
+\r
+#include "ntdd/NtGdiDdCreateDirectDrawObject.c"\r
+#include "ntdd/NtGdiDdDeleteDirectDrawObject.c"\r
+#include "ntdd/NtGdiDdQueryDirectDrawObject.c"\r
+\r
+#include "ntgdi/NtGdiArcInternal.c"\r
+#include "ntgdi/NtGdiSetBitmapBits.c"\r
+#include "ntgdi/NtGdiGetBitmapBits.c"\r
+\r
+#include "ntuser/NtUserCountClipboardFormats.c"\r
+\r
+/* The List of tests */\r
+TESTENTRY TestList[] =\r
+{\r
+    /* DirectDraw */\r
+       { L"NtGdiDdCreateDirectDrawObject", Test_NtGdiDdCreateDirectDrawObject },\r
+       { L"NtGdiDdDeleteDirectDrawObject", Test_NtGdiDdDeleteDirectDrawObject },\r
+       { L"NtGdiDdQueryDirectDrawObject", Test_NtGdiDdQueryDirectDrawObject },\r
+\r
+    /* ntgdi */\r
+       { L"NtGdiArcInternal", Test_NtGdiArcInternal },\r
+       { L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },\r
+       { L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },\r
+\r
+    /* ntuser */\r
+       { L"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats }\r
+};\r
+\r
+/* The function that gives us the number of tests */\r
+INT NumTests(void)\r
+{\r
+       return sizeof(TestList) / sizeof(TESTENTRY);\r
+}\r
+\r
diff --git a/rostests/apitests/w32knapi/w32knapi.c b/rostests/apitests/w32knapi/w32knapi.c
new file mode 100644 (file)
index 0000000..35f512f
--- /dev/null
@@ -0,0 +1,161 @@
+#include "w32knapi.h"\r
+\r
+HINSTANCE g_hInstance;\r
+HMODULE g_hModule = NULL;\r
+INT g_nOs;\r
+PSYSCALL_ENTRY g_SyscallTable;\r
+\r
+BOOL\r
+InitOsVersion()\r
+{\r
+       OSVERSIONINFOW osv;\r
+       LPWSTR pszRos;\r
+\r
+       osv.dwOSVersionInfoSize = sizeof(osv);\r
+       GetVersionExW(&osv);\r
+       pszRos =  osv.szCSDVersion + wcslen(osv.szCSDVersion) + 1;\r
+       /* make sure the string is zero terminated */\r
+       pszRos[127] = 0;\r
+       /* Is ReactOS? */\r
+       if (wcsstr(pszRos, L"ReactOS") != NULL)\r
+       {\r
+               printf("Running on %ls\n", pszRos);\r
+               g_hModule = LoadLibraryW(L"w32kdll.dll");\r
+               if (!g_hModule)\r
+               {\r
+                       printf("w32kdll.dll not found!\n");\r
+                       return FALSE;\r
+               }\r
+               g_nOs = OS_REACTOS;\r
+               return TRUE;\r
+       }\r
+\r
+       if (osv.dwPlatformId != VER_PLATFORM_WIN32_NT)\r
+       {\r
+               printf("Unsupported OS\n");\r
+               return FALSE;\r
+       }\r
+\r
+       if (osv.dwMajorVersion == 5 && osv.dwMinorVersion == 1 && osv.dwBuildNumber == 2600)\r
+       {\r
+               printf("Running on Windows XP, build 2600\n");\r
+               g_nOs = OS_WINDOWS;\r
+               g_SyscallTable = SyscallTable_XP_2600;\r
+               return TRUE;\r
+       }\r
+\r
+       printf("Unsupported OS\n");\r
+\r
+       return FALSE;\r
+}\r
+\r
+\r
+static BOOL\r
+RosSyscall(LPWSTR lpszFunction, int cParams, void* pParams, DWORD* pResult)\r
+{\r
+       DWORD ret;\r
+       char szFunctionName[MAX_PATH];\r
+       int ParamSize = cParams * 4;\r
+\r
+       sprintf(szFunctionName, "%ls", lpszFunction);\r
+       FARPROC proc = (FARPROC)GetProcAddress(g_hModule, szFunctionName);\r
+       if (!proc)\r
+       {\r
+               printf("Couldn't find proc: %s\n", szFunctionName);\r
+               return FALSE;\r
+       }\r
+\r
+       asm volatile\r
+       (\r
+               "subl %%eax, %%esp;"    // calculate new stack pos\r
+               "movl %%esp, %%edi;"    // destination is stackpointer\r
+               "cld;"                                  // clear direction flag\r
+               "rep movsd;"                    // copy params to the stack\r
+               "call *%%edx"                   // call function\r
+               : "=a" (ret)\r
+               : "c" (cParams), "a" (ParamSize), "S"(pParams), "d"(proc)\r
+       );\r
+\r
+       *pResult = ret;\r
+       return TRUE;\r
+}\r
+\r
+static PSYSCALL_ENTRY\r
+GetSyscallEntry(LPWSTR lpszFunction)\r
+{\r
+       INT i;\r
+\r
+       for (i = 0; g_SyscallTable[i].lpszFunction != NULL; i++)\r
+       {\r
+               if (wcscmp(g_SyscallTable[i].lpszFunction, lpszFunction) == 0)\r
+               {\r
+                       return &g_SyscallTable[i];\r
+               }\r
+       }\r
+       return NULL;\r
+}\r
+\r
+static BOOL\r
+WinSyscall(LPWSTR pszFunction, void* pParams, void* pResult)\r
+{\r
+       PSYSCALL_ENTRY pEntry = GetSyscallEntry(pszFunction);\r
+       DWORD ret;\r
+\r
+       asm volatile ("int $0x2e\n" : "=a"(ret): "a" (pEntry->nSyscallNum), "d" (pParams));\\r
+       *((DWORD*)pResult) = ret;\r
+       return FALSE;\r
+}\r
+\r
+DWORD\r
+Syscall(LPWSTR pszFunction, int cParams, void* pParams)\r
+{\r
+    DWORD dwRet = 0;\r
+\r
+       if (g_nOs == OS_REACTOS)\r
+       {\r
+               RosSyscall(pszFunction, cParams, pParams, &dwRet);\r
+       }\r
+       else\r
+       {\r
+               WinSyscall(pszFunction, pParams, &dwRet);\r
+       }\r
+       return dwRet;\r
+}\r
+\r
+BOOL\r
+IsFunctionPresent(LPWSTR lpszFunction)\r
+{\r
+       if (g_nOs == OS_REACTOS)\r
+       {\r
+               char szFunctionName[MAX_PATH];\r
+               sprintf(szFunctionName, "%ls", lpszFunction);\r
+               return (GetProcAddress(g_hModule, szFunctionName) != NULL);\r
+       }\r
+\r
+       return (GetSyscallEntry(lpszFunction) != NULL);\r
+}\r
+\r
+int APIENTRY\r
+WinMain(HINSTANCE hInstance,\r
+        HINSTANCE hPrevInstance,\r
+        LPSTR     lpCmdLine,\r
+        int       nCmdShow)\r
+{\r
+       g_hInstance = hInstance;\r
+\r
+       printf("Win32k native API test\n");\r
+\r
+       /* Convert to gui thread */\r
+       IsGUIThread(TRUE);\r
+\r
+       if (!InitOsVersion())\r
+       {\r
+               return 0;\r
+       }\r
+\r
+       printf("\n");\r
+\r
+       TestMain(L"w32knapi.exe");\r
+\r
+       return 0;\r
+}\r
diff --git a/rostests/apitests/w32knapi/w32knapi.h b/rostests/apitests/w32knapi/w32knapi.h
new file mode 100644 (file)
index 0000000..22c3393
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _W32KNAPI_H\r
+#define _W32KNAPI_H\r
+\r
+#include "..\apitest.h"\r
+#include <ddk/winddi.h>\r
+\r
+#define OS_UNSUPPORTED 0\r
+#define OS_REACTOS     1\r
+#define OS_WINDOWS     2\r
+\r
+#define W32KAPI\r
+\r
+typedef struct\r
+{\r
+       LPWSTR lpszFunction;\r
+       INT nSyscallNum;\r
+       INT nParams;\r
+} SYCALL_ENTRY, *PSYSCALL_ENTRY;\r
+\r
+extern HINSTANCE g_hInstance;\r
+extern SYCALL_ENTRY SyscallTable_XP_2600[];\r
+extern HMODULE g_hModule;\r
+extern INT g_nOsVer;\r
+\r
+DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);\r
+BOOL InitOsVersion();\r
+\r
+#endif /* _W32KNAPI_H */\r
diff --git a/rostests/apitests/w32knapi/w32knapi.rbuild b/rostests/apitests/w32knapi/w32knapi.rbuild
new file mode 100644 (file)
index 0000000..f997b9d
--- /dev/null
@@ -0,0 +1,13 @@
+<module name="w32knapi" type="win32cui">\r
+       <include base="w32knapi">.</include>\r
+       <define name="__USE_W32API" />\r
+       <define name="_WIN32_WINNT">0x0501</define>\r
+       <library>kernel32</library>\r
+       <library>user32</library>\r
+       <library>gdi32</library>\r
+       <library>shell32</library>\r
+       <file>w32knapi.c</file>\r
+       <file>testlist.c</file>\r
+       <file>xp-2600.c</file>\r
+       <file>..\apitest.c</file>\r
+</module>\r
diff --git a/rostests/apitests/w32knapi/xp-2600.c b/rostests/apitests/w32knapi/xp-2600.c
new file mode 100644 (file)
index 0000000..664e322
--- /dev/null
@@ -0,0 +1,677 @@
+#include "w32knapi.h"\r
+\r
+SYCALL_ENTRY\r
+SyscallTable_XP_2600[] =\r
+{\r
+       {L"NtGdiAbortDoc", 0x1000,1},\r
+       {L"NtGdiAbortPath", 0x1001,1},\r
+       {L"NtGdiAddFontResourceW", 0x1002,6},\r
+       {L"NtGdiAddRemoteFontToDC", 0x1003,4},\r
+       {L"NtGdiAddFontMemResourceEx", 0x1004,5},\r
+       {L"NtGdiRemoveMergeFont", 0x1005,2},\r
+       {L"NtGdiAddRemoteMMInstanceToDC", 0x1006,3},\r
+       {L"NtGdiAlphaBlend", 0x1007,12},\r
+       {L"NtGdiAngleArc", 0x1008,6},\r
+       {L"NtGdiAnyLinkedFonts", 0x1009,0},\r
+       {L"GreFontIsLinked", 0x100A,1},\r
+       {L"NtGdiArcInternal", 0x100B,10},\r
+       {L"NtGdiBeginPath", 0x100C,1},\r
+       {L"NtGdiBitBlt", 0x100D,11},\r
+       {L"NtGdiCancelDC", 0x100E,1},\r
+       {L"NtGdiCheckBitmapBits", 0x100F,8},\r
+       {L"NtGdiCloseFigure", 0x1010,1},\r
+       {L"NtGdiClearBitmapAttributes", 0x1011,2},\r
+       {L"NtGdiClearBrushAttributes", 0x1012,2},\r
+       {L"NtGdiColorCorrectPalette", 0x1013,6},\r
+       {L"NtGdiCombineRgn", 0x1014,4},\r
+       {L"NtGdiCombineTransform", 0x1015,3},\r
+       {L"NtGdiComputeXformCoefficients", 0x1016,1},\r
+       {L"NtGdiConsoleTextOut", 0x1017,4},\r
+       {L"NtGdiConvertMetafileRect", 0x1018,2},\r
+       {L"NtGdiCreateBitmap", 0x1019,5},\r
+       {L"NtGdiCreateClientObj", 0x101A,1},\r
+       {L"NtGdiCreateColorSpace", 0x101B,1},\r
+       {L"NtGdiCreateColorTransform", 0x101C,8},\r
+       {L"NtGdiCreateCompatibleBitmap", 0x101D,3},\r
+       {L"NtGdiCreateCompatibleDC", 0x101E,1},\r
+       {L"NtGdiCreateDIBBrush", 0x101F,6},\r
+       {L"NtGdiCreateDIBitmapInternal", 0x1020,11},\r
+       {L"NtGdiCreateDIBSection", 0x1021,9},\r
+       {L"NtGdiCreateEllipticRgn", 0x1022,4},\r
+       {L"NtGdiCreateHalftonePalette", 0x1023,1},\r
+       {L"NtGdiCreateHatchBrushInternal", 0x1024,3},\r
+       {L"NtGdiCreateMetafileDC", 0x1025,1},\r
+       {L"NtGdiCreatePaletteInternal", 0x1026,2},\r
+       {L"NtGdiCreatePatternBrushInternal", 0x1027,3},\r
+       {L"NtGdiCreatePen", 0x1028,4},\r
+       {L"NtGdiCreateRectRgn", 0x1029,4},\r
+       {L"NtGdiCreateRoundRectRgn", 0x102A,6},\r
+       {L"NtGdiCreateServerMetaFile", 0x102B,6},\r
+       {L"NtGdiCreateSolidBrush", 0x102C,2},\r
+       {L"NtGdiD3dContextCreate", 0x102D,4},\r
+       {L"NtGdiD3dContextDestroy", 0x102E,1},\r
+       {L"NtGdiD3dContextDestroyAll", 0x102F,1},\r
+       {L"NtGdiD3dValidateTextureStageState", 0x1030,1},\r
+       {L"NtGdiD3dDrawPrimitives2", 0x1031,7},\r
+       {L"NtGdiDdGetDriverState", 0x1032,1},\r
+       {L"NtGdiDdAddAttachedSurface", 0x1033,3},\r
+       {L"NtGdiDdAlphaBlt", 0x1034,3},\r
+       {L"NtGdiDdAttachSurface", 0x1035,2},\r
+       {L"NtGdiDdBeginMoCompFrame", 0x1036,2},\r
+       {L"NtGdiDdBlt", 0x1037,3},\r
+       {L"NtGdiDdCanCreateSurface", 0x1038,2},\r
+       {L"NtGdiDdCanCreateD3DBuffer", 0x1039,2},\r
+       {L"NtGdiDdColorControl", 0x103A,2},\r
+       {L"NtGdiDdCreateDirectDrawObject", 0x103B,1},\r
+       {L"NtGdiDdCreateSurface", 0x103C,8},\r
+       {L"NtGdiDdCreateD3DBuffer", 0x103D,8},\r
+       {L"NtGdiDdCreateMoComp", 0x103E,2},\r
+       {L"NtGdiDdCreateSurfaceObject", 0x103F,6},\r
+       {L"NtGdiDdDeleteDirectDrawObject", 0x1040,1},\r
+       {L"NtGdiDdDeleteSurfaceObject", 0x1041,1},\r
+       {L"NtGdiDdDestroyMoComp", 0x1042,2},\r
+       {L"NtGdiDdDestroySurface", 0x1043,2},\r
+       {L"NtGdiDdDestroyD3DBuffer", 0x1044,1},\r
+       {L"NtGdiDdEndMoCompFrame", 0x1045,2},\r
+       {L"NtGdiDdFlip", 0x1046,5},\r
+       {L"NtGdiDdFlipToGDISurface", 0x1047,2},\r
+       {L"NtGdiDdGetAvailDriverMemory", 0x1048,2},\r
+       {L"NtGdiDdGetBltStatus", 0x1049,2},\r
+       {L"NtGdiDdGetDC", 0x104A,2},\r
+       {L"NtGdiDdGetDriverInfo", 0x104B,2},\r
+       {L"NtGdiDdGetDxHandle", 0x104C,3},\r
+       {L"NtGdiDdGetFlipStatus", 0x104D,2},\r
+       {L"NtGdiDdGetInternalMoCompInfo", 0x104E,2},\r
+       {L"NtGdiDdGetMoCompBuffInfo", 0x104F,2},\r
+       {L"NtGdiDdGetMoCompGuids", 0x1050,2},\r
+       {L"NtGdiDdGetMoCompFormats", 0x1051,2},\r
+       {L"NtGdiDdGetScanLine", 0x1052,2},\r
+       {L"NtGdiDdLock", 0x1053,3},\r
+       {L"NtGdiDdLockD3D", 0x1054,2},\r
+       {L"NtGdiDdQueryDirectDrawObject", 0x1055,11},\r
+       {L"NtGdiDdQueryMoCompStatus", 0x1056,2},\r
+       {L"NtGdiDdReenableDirectDrawObject", 0x1057,2},\r
+       {L"NtGdiDdReleaseDC", 0x1058,1},\r
+       {L"NtGdiDdRenderMoComp", 0x1059,2},\r
+       {L"NtGdiDdResetVisrgn", 0x105A,2},\r
+       {L"NtGdiDdSetColorKey", 0x105B,2},\r
+       {L"NtGdiDdSetExclusiveMode", 0x105C,2},\r
+       {L"NtGdiDdSetGammaRamp", 0x105D,3},\r
+       {L"NtGdiDdCreateSurfaceEx", 0x105E,3},\r
+       {L"NtGdiDdSetOverlayPosition", 0x105F,3},\r
+       {L"NtGdiDdUnattachSurface", 0x1060,2},\r
+       {L"NtGdiDdUnlock", 0x1061,2},\r
+       {L"NtGdiDdUnlockD3D", 0x1062,2},\r
+       {L"NtGdiDdUpdateOverlay", 0x1063,3},\r
+       {L"NtGdiDdWaitForVerticalBlank", 0x1064,2},\r
+       {L"NtGdiDvpCanCreateVideoPort", 0x1065,2},\r
+       {L"NtGdiDvpColorControl", 0x1066,2},\r
+       {L"NtGdiDvpCreateVideoPort", 0x1067,2},\r
+       {L"NtGdiDvpDestroyVideoPort", 0x1068,2},\r
+       {L"NtGdiDvpFlipVideoPort", 0x1069,4},\r
+       {L"NtGdiDvpGetVideoPortBandwidth", 0x106A,2},\r
+       {L"NtGdiDvpGetVideoPortField", 0x106B,2},\r
+       {L"NtGdiDvpGetVideoPortFlipStatus", 0x106C,2},\r
+       {L"NtGdiDvpGetVideoPortInputFormats", 0x106D,2},\r
+       {L"NtGdiDvpGetVideoPortLine", 0x106E,2},\r
+       {L"NtGdiDvpGetVideoPortOutputFormats", 0x106F,2},\r
+       {L"NtGdiDvpGetVideoPortConnectInfo", 0x1070,2},\r
+       {L"NtGdiDvpGetVideoSignalStatus", 0x1071,2},\r
+       {L"NtGdiDvpUpdateVideoPort", 0x1072,4},\r
+       {L"NtGdiDvpWaitForVideoPortSync", 0x1073,2},\r
+       {L"NtGdiDvpAcquireNotification", 0x1074,3},\r
+       {L"NtGdiDvpReleaseNotification", 0x1075,2},\r
+       {L"NtGdiDxgGenericThunk", 0x1076,6},\r
+       {L"NtGdiDeleteClientObj", 0x1077,1},\r
+       {L"bDeleteColorSpace", 0x1078,1},\r
+       {L"NtGdiDeleteColorTransform", 0x1079,2},\r
+       {L"NtGdiDeleteObjectApp", 0x107A,1},\r
+       {L"NtGdiDescribePixelFormat", 0x107B,4},\r
+       {L"NtGdiGetPerBandInfo", 0x107C,2},\r
+       {L"NtGdiDoBanding", 0x107D,4},\r
+       {L"NtGdiDoPalette", 0x107E,6},\r
+       {L"NtGdiDrawEscape", 0x107F,4},\r
+       {L"NtGdiEllipse", 0x1080,5},\r
+       {L"GreEnableEUDC", 0x1081,1},\r
+       {L"NtGdiEndDoc", 0x1082,1},\r
+       {L"NtGdiEndPage", 0x1083,1},\r
+       {L"NtGdiEndPath", 0x1084,1},\r
+       {L"NtGdiEnumFontChunk", 0x1085,5},\r
+       {L"NtGdiEnumFontClose", 0x1086,1},\r
+       {L"NtGdiEnumFontOpen", 0x1087,7},\r
+       {L"NtGdiEnumObjects", 0x1088,4},\r
+       {L"NtGdiEqualRgn", 0x1089,2},\r
+       {L"NtGdiEudcLoadUnloadLink", 0x108A,7},\r
+       {L"NtGdiExcludeClipRect", 0x108B,5},\r
+       {L"NtGdiExtCreatePen", 0x108C,11},\r
+       {L"NtGdiExtCreateRegion", 0x108D,3},\r
+       {L"NtGdiExtEscape", 0x108E,8},\r
+       {L"NtGdiExtFloodFill", 0x108F,5},\r
+       {L"NtGdiExtGetObjectW", 0x1090,3},\r
+       {L"NtGdiExtSelectClipRgn", 0x1091,3},\r
+       {L"NtGdiExtTextOutW", 0x1092,9},\r
+       {L"NtGdiFillPath", 0x1093,1},\r
+       {L"NtGdiFillRgn", 0x1094,3},\r
+       {L"NtGdiFlattenPath", 0x1095,1},\r
+       {L"NtGdiFlushUserBatch", 0x1096,0},\r
+       {L"NtGdiFlush", 0x1097,0},\r
+       {L"NtGdiForceUFIMapping", 0x1098,2},\r
+       {L"NtGdiFrameRgn", 0x1099,5},\r
+       {L"NtGdiFullscreenControl", 0x109A,5},\r
+       {L"NtGdiGetAndSetDCDword", 0x109B,4},\r
+       {L"NtGdiGetAppClipBox", 0x109C,2},\r
+       {L"NtGdiGetBitmapBits", 0x109D,3},\r
+       {L"NtGdiGetBitmapDimension", 0x109E,2},\r
+       {L"NtGdiGetBoundsRect", 0x109F,3},\r
+       {L"NtGdiGetCharABCWidthsW", 0x10A0,6},\r
+       {L"NtGdiGetCharacterPlacementW", 0x10A1,6},\r
+       {L"NtGdiGetCharSet", 0x10A2,1},\r
+       {L"NtGdiGetCharWidthW", 0x10A3,6},\r
+       {L"NtGdiGetCharWidthInfo", 0x10A4,2},\r
+       {L"NtGdiGetColorAdjustment", 0x10A5,2},\r
+       {L"NtGdiGetColorSpaceforBitmap", 0x10A6,1},\r
+       {L"NtGdiGetDCDword", 0x10A7,3},\r
+       {L"NtGdiGetDCforBitmap", 0x10A8,1},\r
+       {L"NtGdiGetDCObject", 0x10A9,2},\r
+       {L"NtGdiGetDCPoint", 0x10AA,3},\r
+       {L"NtGdiGetDeviceCaps", 0x10AB,2},\r
+       {L"NtGdiGetDeviceGammaRamp", 0x10AC,2},\r
+       {L"NtGdiGetDeviceCapsAll", 0x10AD,2},\r
+       {L"NtGdiGetDIBitsInternal", 0x10AE,9},\r
+       {L"NtGdiGetETM", 0x10AF,2},\r
+       {L"NtGdiGetEudcTimeStampEx", 0x10B0,3},\r
+       {L"NtGdiGetFontData", 0x10B1,5},\r
+       {L"NtGdiGetFontResourceInfoInternalW", 0x10B2,7},\r
+       {L"NtGdiGetGlyphIndicesW", 0x10B3,5},\r
+       {L"NtGdiGetGlyphIndicesWInternal", 0x10B4,6},\r
+       {L"NtGdiGetGlyphOutline", 0x10B5,8},\r
+       {L"NtGdiGetKerningPairs", 0x10B6,3},\r
+       {L"NtGdiGetLinkedUFIs", 0x10B7,3},\r
+       {L"NtGdiGetMiterLimit", 0x10B8,2},\r
+       {L"NtGdiGetMonitorID", 0x10B9,3},\r
+       {L"NtGdiGetNearestColor", 0x10BA,2},\r
+       {L"NtGdiGetNearestPaletteIndex", 0x10BB,2},\r
+       {L"NtGdiGetObjectBitmapHandle", 0x10BC,2},\r
+       {L"NtGdiGetOutlineTextMetricsInternalW", 0x10BD,4},\r
+       {L"NtGdiGetPath", 0x10BE,4},\r
+       {L"NtGdiGetPixel", 0x10BF,3},\r
+       {L"NtGdiGetRandomRgn", 0x10C0,3},\r
+       {L"NtGdiGetRasterizerCaps", 0x10C1,2},\r
+       {L"NtGdiGetRealizationInfo", 0x10C2,3},\r
+       {L"NtGdiGetRegionData", 0x10C3,3},\r
+       {L"NtGdiGetRgnBox", 0x10C4,2},\r
+       {L"NtGdiGetServerMetaFileBits", 0x10C5,7},\r
+       {L"NtGdiGetSpoolMessage", 0x10C6,4},\r
+       {L"NtGdiGetStats", 0x10C7,5},\r
+       {L"NtGdiGetStockObject", 0x10C8,1},\r
+       {L"NtGdiGetStringBitmapW", 0x10C9,5},\r
+       {L"NtGdiGetSystemPaletteUse", 0x10CA,1},\r
+       {L"NtGdiGetTextCharsetInfo", 0x10CB,3},\r
+       {L"NtGdiGetTextExtent", 0x10CC,5},\r
+       {L"NtGdiGetTextExtentExW", 0x10CD,8},\r
+       {L"NtGdiGetTextFaceW", 0x10CE,4},\r
+       {L"NtGdiGetTextMetricsW", 0x10CF,3},\r
+       {L"NtGdiGetTransform", 0x10D0,3},\r
+       {L"NtGdiGetUFI", 0x10D1,6},\r
+       {L"NtGdiGetEmbUFI", 0x10D2,7},\r
+       {L"NtGdiGetUFIPathname", 0x10D3,10},\r
+       {L"GreGetEmbedFonts", 0x10D4,0},\r
+       {L"NtGdiChangeGhostFont", 0x10D5,2},\r
+       {L"NtGdiAddEmbFontToDC", 0x10D6,2},\r
+       {L"NtGdiGetFontUnicodeRanges", 0x10D7,2},\r
+       {L"NtGdiGetWidthTable", 0x10D8,7},\r
+       {L"NtGdiGradientFill", 0x10D9,6},\r
+       {L"NtGdiHfontCreate", 0x10DA,5},\r
+       {L"NtGdiIcmBrushInfo", 0x10DB,8},\r
+       {L"NtGdiInit", 0x10DC,0},\r
+       {L"NtGdiInitSpool", 0x10DD,0},\r
+       {L"NtGdiIntersectClipRect", 0x10DE,5},\r
+       {L"NtGdiInvertRgn", 0x10DF,2},\r
+       {L"NtGdiLineTo", 0x10E0,3},\r
+       {L"NtGdiMakeFontDir", 0x10E1,5},\r
+       {L"NtGdiMakeInfoDC", 0x10E2,2},\r
+       {L"NtGdiMaskBlt", 0x10E3,13},\r
+       {L"NtGdiModifyWorldTransform", 0x10E4,3},\r
+       {L"NtGdiMonoBitmap", 0x10E5,1},\r
+       {L"NtGdiMoveTo", 0x10E6,4},\r
+       {L"NtGdiOffsetClipRgn", 0x10E7,3},\r
+       {L"NtGdiOffsetRgn", 0x10E8,3},\r
+       {L"NtGdiOpenDCW", 0x10E9,7},\r
+       {L"NtGdiPatBlt", 0x10EA,6},\r
+       {L"NtGdiPolyPatBlt", 0x10EB,5},\r
+       {L"NtGdiPathToRegion", 0x10EC,1},\r
+       {L"NtGdiPlgBlt", 0x10ED,11},\r
+       {L"NtGdiPolyDraw", 0x10EE,4},\r
+       {L"NtGdiPolyPolyDraw", 0x10EF,5},\r
+       {L"NtGdiPolyTextOutW", 0x10F0,4},\r
+       {L"NtGdiPtInRegion", 0x10F1,3},\r
+       {L"NtGdiPtVisible", 0x10F2,3},\r
+       {L"NtGdiQueryFonts", 0x10F3,3},\r
+       {L"NtGdiQueryFontAssocInfo", 0x10F4,1},\r
+       {L"NtGdiRectangle", 0x10F5,5},\r
+       {L"NtGdiRectInRegion", 0x10F6,2},\r
+       {L"NtGdiRectVisible", 0x10F7,2},\r
+       {L"NtGdiRemoveFontResourceW", 0x10F8,6},\r
+       {L"NtGdiRemoveFontMemResourceEx", 0x10F9,1},\r
+       {L"NtGdiResetDC", 0x10FA,5},\r
+       {L"NtGdiResizePalette", 0x10FB,2},\r
+       {L"NtGdiRestoreDC", 0x10FC,2},\r
+       {L"NtGdiRoundRect", 0x10FD,7},\r
+       {L"NtGdiSaveDC", 0x10FE,1},\r
+       {L"NtGdiScaleViewportExtEx", 0x10FF,6},\r
+       {L"NtGdiScaleWindowExtEx", 0x1100,6},\r
+       {L"NtGdiSelectBitmap", 0x1101,2},\r
+       {L"GreSelectBitmap", 0x1101,2},\r
+       {L"NtGdiSelectBrush", 0x1102,2},\r
+       {L"NtGdiSelectClipPath", 0x1103,2},\r
+       {L"NtGdiSelectFont", 0x1104,2},\r
+       {L"NtGdiSelectPen", 0x1105,2},\r
+       {L"NtGdiSetBitmapAttributes", 0x1106,2},\r
+       {L"NtGdiSetBitmapBits", 0x1107,3},\r
+       {L"NtGdiSetBitmapDimension", 0x1108,4},\r
+       {L"NtGdiSetBoundsRect", 0x1109,3},\r
+       {L"NtGdiSetBrushAttributes", 0x110A,2},\r
+       {L"NtGdiSetBrushOrg", 0x110B,4},\r
+       {L"NtGdiSetColorAdjustment", 0x110C,2},\r
+       {L"NtGdiSetColorSpace", 0x110D,2},\r
+       {L"NtGdiSetDeviceGammaRamp", 0x110E,2},\r
+       {L"NtGdiSetDIBitsToDeviceInternal", 0x110F,16},\r
+       {L"NtGdiSetFontEnumeration", 0x1110,1},\r
+       {L"NtGdiSetFontXform", 0x1111,3},\r
+       {L"NtGdiSetIcmMode", 0x1112,3},\r
+       {L"NtGdiSetLinkedUFIs", 0x1113,3},\r
+       {L"NtGdiSetMagicColors", 0x1114,3},\r
+       {L"NtGdiSetMetaRgn", 0x1115,1},\r
+       {L"NtGdiSetMiterLimit", 0x1116,3},\r
+       {L"NtGdiGetDeviceWidth", 0x1117,1},\r
+       {L"NtGdiMirrorWindowOrg", 0x1118,1},\r
+       {L"NtGdiSetLayout", 0x1119,3},\r
+       {L"NtGdiSetPixel", 0x111A,4},\r
+       {L"NtGdiSetPixelFormat", 0x111B,2},\r
+       {L"NtGdiSetRectRgn", 0x111C,5},\r
+       {L"NtGdiSetSystemPaletteUse", 0x111D,2},\r
+       {L"NtGdiSetTextJustification", 0x111E,3},\r
+       {L"NtGdiSetupPublicCFONT", 0x111F,3},\r
+       {L"NtGdiSetVirtualResolution", 0x1120,5},\r
+       {L"NtGdiSetSizeDevice", 0x1121,3},\r
+       {L"NtGdiStartDoc", 0x1122,4},\r
+       {L"NtGdiStartPage", 0x1123,1},\r
+       {L"NtGdiStretchBlt", 0x1124,12},\r
+       {L"NtGdiStretchDIBitsInternal", 0x1125, 16},\r
+       {L"NtGdiStrokeAndFillPath", 0x1126,1},\r
+       {L"NtGdiStrokePath", 0x1127,1},\r
+       {L"NtGdiSwapBuffers", 0x1128,1},\r
+       {L"NtGdiTransformPoints", 0x1129,5},\r
+       {L"NtGdiTransparentBlt", 0x112A,11},\r
+       {L"NtGdiUnloadPrinterDriver", 0x112B,2},\r
+       {L"NtGdiUMPDEngFreeUserMem", 0x112C,1},\r
+       {L"NtGdiUnmapMemFont", 0x112C,1},\r
+       {L"NtGdiUnrealizeObject", 0x112D,1},\r
+       {L"NtGdiUpdateColors", 0x112E,1},\r
+       {L"NtGdiWidenPath", 0x112F,1},\r
+       {L"NtUserActivateKeyboardLayout", 0x1130,2},\r
+       {L"NtUserAlterWindowStyle", 0x1131,3},\r
+       {L"NtUserAssociateInputContext", 0x1132,3},\r
+       {L"NtUserAttachThreadInput", 0x1133,3},\r
+       {L"NtUserBeginPaint", 0x1134,2},\r
+       {L"NtUserBitBltSysBmp", 0x1135,8},\r
+       {L"NtUserBlockInput", 0x1136,1},\r
+       {L"NtUserBuildHimcList", 0x1137,4},\r
+       {L"NtUserBuildHwndList", 0x1138,7},\r
+       {L"NtUserBuildNameList", 0x1139,4},\r
+       {L"NtUserBuildPropList", 0x113A,4},\r
+       {L"NtUserCallHwnd", 0x113B,2},\r
+       {L"NtUserCallHwndLock", 0x113C,2},\r
+       {L"NtUserCallHwndOpt", 0x113D,2},\r
+       {L"NtUserCallHwndParam", 0x113E,3},\r
+       {L"NtUserCallHwndParamLock", 0x113F,3},\r
+       {L"NtUserCallMsgFilter", 0x1140,2},\r
+       {L"NtUserCallNextHookEx", 0x1141,4},\r
+       {L"NtUserCallNoParam", 0x1142,1},\r
+       {L"NtUserCallOneParam", 0x1143,2},\r
+       {L"NtUserCallTwoParam", 0x1144,3},\r
+       {L"NtUserChangeClipboardChain", 0x1145,2},\r
+       {L"NtUserChangeDisplaySettings", 0x1146,5},\r
+       {L"NtUserCheckImeHotKey", 0x1147,2},\r
+       {L"NtUserCheckMenuItem", 0x1148,3},\r
+       {L"NtUserChildWindowFromPointEx", 0x1149,4},\r
+       {L"NtUserClipCursor", 0x114A,1},\r
+       {L"NtUserCloseClipboard", 0x114B,0},\r
+       {L"NtUserCloseDesktop", 0x114C,1},\r
+       {L"NtUserCloseWindowStation", 0x114D,1},\r
+       {L"NtUserConsoleControl", 0x114E,3},\r
+       {L"NtUserConvertMemHandle", 0x114F,2},\r
+       {L"NtUserCopyAcceleratorTable", 0x1150,3},\r
+       {L"NtUserCountClipboardFormats", 0x1151,0},\r
+       {L"NtUserCreateAcceleratorTable", 0x1152,2},\r
+       {L"NtUserCreateCaret", 0x1153,4},\r
+       {L"NtUserCreateDesktop", 0x1154,5},\r
+       {L"NtUserCreateInputContext", 0x1155,1},\r
+       {L"NtUserCreateLocalMemHandle", 0x1156,4},\r
+       {L"NtUserCreateWindowEx", 0x1157,16},\r
+       {L"NtUserCreateWindowStation", 0x1158,7},\r
+       {L"NtUserDdeGetQualityOfService", 0x1159,3},\r
+       {L"NtUserDdeInitialize", 0x115A,5},\r
+       {L"NtUserDdeSetQualityOfService", 0x115B,3},\r
+       {L"NtUserDeferWindowPos", 0x115C,8},\r
+       {L"NtUserDefSetText", 0x115D,2},\r
+       {L"NtUserDeleteMenu", 0x115E,3},\r
+       {L"NtUserDestroyAcceleratorTable", 0x115F,1},\r
+       {L"NtUserDestroyCursor", 0x1160,2},\r
+       {L"NtUserDestroyInputContext", 0x1161,1},\r
+       {L"NtUserDestroyMenu", 0x1162,1},\r
+       {L"NtUserDestroyWindow", 0x1163,1},\r
+       {L"NtUserDisableThreadIme", 0x1164,1},\r
+       {L"NtUserDispatchMessage", 0x1165,1},\r
+       {L"NtUserDragDetect", 0x1166,3},\r
+       {L"NtUserDragObject", 0x1167,5},\r
+       {L"NtUserDrawAnimatedRects", 0x1168,4},\r
+       {L"NtUserDrawCaption", 0x1169,4},\r
+       {L"NtUserDrawCaptionTemp", 0x116A,7},\r
+       {L"NtUserDrawIconEx", 0x116B,11},\r
+       {L"NtUserDrawMenuBarTemp", 0x116C,5},\r
+       {L"NtUserEmptyClipboard", 0x116D,0},\r
+       {L"NtUserEnableMenuItem", 0x116E,3},\r
+       {L"NtUserEnableScrollBar", 0x116F,3},\r
+       {L"NtUserEndDeferWindowPosEx", 0x1170,2},\r
+       {L"NtUserEndMenu", 0x1171,0},\r
+       {L"NtUserEndPaint", 0x1172,2},\r
+       {L"NtUserEnumDisplayDevices", 0x1173,4},\r
+       {L"NtUserEnumDisplayMonitors", 0x1174,4},\r
+       {L"NtUserEnumDisplaySettings", 0x1175,4},\r
+       {L"NtUserEvent", 0x1176,1},\r
+       {L"NtUserExcludeUpdateRgn", 0x1177,2},\r
+       {L"NtUserFillWindow", 0x1178,4},\r
+       {L"NtUserFindExistingCursorIcon", 0x1179,3},\r
+       {L"NtUserFindWindowEx", 0x117A,5},\r
+       {L"NtUserFlashWindowEx", 0x117B,1},\r
+       {L"NtUserGetAltTabInfo", 0x117C,6},\r
+       {L"NtUserGetAncestor", 0x117D,2},\r
+       {L"NtUserGetAppImeLevel", 0x117E,1},\r
+       {L"NtUserGetAsyncKeyState", 0x117F,1},\r
+       {L"NtUserGetAtomName", 0x1180,2},\r
+       {L"NtUserGetCaretBlinkTime", 0x1181,0},\r
+       {L"NtUserGetCaretPos", 0x1182,1},\r
+       {L"NtUserGetClassInfo", 0x1183,5},\r
+       {L"NtUserGetClassName", 0x1184,3},\r
+       {L"NtUserGetClipboardData", 0x1185,2},\r
+       {L"NtUserGetClipboardFormatName", 0x1186,3},\r
+       {L"NtUserGetClipboardOwner", 0x1187,0},\r
+       {L"NtUserGetClipboardSequenceNumber", 0x1188,0},\r
+       {L"NtUserGetClipboardViewer", 0x1189,0},\r
+       {L"NtUserGetClipCursor", 0x118A,1},\r
+       {L"NtUserGetComboBoxInfo", 0x118B,2},\r
+       {L"NtUserGetControlBrush", 0x118C,3},\r
+       {L"NtUserGetControlColor", 0x118D,4},\r
+       {L"NtUserGetCPD", 0x118E,3},\r
+       {L"NtUserGetCursorFrameInfo", 0x118F,4},\r
+       {L"NtUserGetCursorInfo", 0x1190,1},\r
+       {L"NtUserGetDC", 0x1191,1},\r
+       {L"NtUserGetDCEx", 0x1192,3},\r
+       {L"NtUserGetDoubleClickTime", 0x1193,0},\r
+       {L"NtUserGetForegroundWindow", 0x1194,0},\r
+       {L"NtUserGetGuiResources", 0x1195,2},\r
+       {L"NtUserGetGUIThreadInfo", 0x1196,2},\r
+       {L"NtUserGetIconInfo", 0x1197,6},\r
+       {L"NtUserGetIconSize", 0x1198,4},\r
+       {L"NtUserGetImeHotKey", 0x1199,4},\r
+       {L"NtUserGetImeInfoEx", 0x119A,2},\r
+       {L"NtUserGetInternalWindowPos", 0x119B,3},\r
+       {L"NtUserGetKeyboardLayoutList", 0x119C,2},\r
+       {L"NtUserGetKeyboardLayoutName", 0x119D,1},\r
+       {L"NtUserGetKeyboardState", 0x119E,1},\r
+       {L"NtUserGetKeyNameText", 0x119F,3},\r
+       {L"NtUserGetKeyState", 0x11A0,1},\r
+       {L"NtUserGetListBoxInfo", 0x11A1,1},\r
+       {L"NtUserGetMenuBarInfo", 0x11A2,4},\r
+       {L"NtUserGetMenuIndex", 0x11A3,2},\r
+       {L"NtUserGetMenuItemRect", 0x11A4,4},\r
+       {L"NtUserGetMessage", 0x11A5,4},\r
+       {L"NtUserGetMouseMovePointsEx", 0x11A6,5},\r
+       {L"NtUserGetObjectInformation", 0x11A7,5},\r
+       {L"NtUserGetOpenClipboardWindow", 0x11A8,0},\r
+       {L"NtUserGetPriorityClipboardFormat", 0x11A9,2},\r
+       {L"NtUserGetProcessWindowStation", 0x11AA,0},\r
+       {L"NtUserGetRawInputBuffer", 0x11AB,3},\r
+       {L"NtUserGetRawInputData", 0x11AC,5},\r
+       {L"NtUserGetRawInputDeviceInfo", 0x11AD,4},\r
+       {L"NtUserGetRawInputDeviceList", 0x11AE,3},\r
+       {L"NtUserGetRegisteredRawInputDevices", 0x11AF,3},\r
+       {L"NtUserGetScrollBarInfo", 0x11B0,3},\r
+       {L"NtUserGetSystemMenu", 0x11B1,2},\r
+       {L"NtUserGetThreadDesktop", 0x11B2,2},\r
+       {L"NtUserGetThreadState", 0x11B3,1},\r
+       {L"NtUserGetTitleBarInfo", 0x11B4,2},\r
+       {L"NtUserGetUpdateRect", 0x11B5,3},\r
+       {L"NtUserGetUpdateRgn", 0x11B6,3},\r
+       {L"NtUserGetWindowDC", 0x11B7,1},\r
+       {L"NtUserGetWindowPlacement", 0x11B8,2},\r
+       {L"NtUserGetWOWClass", 0x11B9,2},\r
+       {L"NtUserHardErrorControl", 0x11BA,3},\r
+       {L"NtUserHideCaret", 0x11BB,1},\r
+       {L"NtUserHiliteMenuItem", 0x11BC,4},\r
+       {L"NtUserImpersonateDdeClientWindow", 0x11BD,2},\r
+       {L"NtUserInitialize", 0x11BE,3},\r
+       {L"NtUserInitializeClientPfnArrays", 0x11BF,4},\r
+       {L"NtUserInitTask", 0x11C0,12},\r
+       {L"NtUserInternalGetWindowText", 0x11C1,3},\r
+       {L"NtUserInvalidateRect", 0x11C2,3},\r
+       {L"NtUserInvalidateRgn", 0x11C3,3},\r
+       {L"NtUserIsClipboardFormatAvailable", 0x11C4,1},\r
+       {L"NtUserKillTimer", 0x11C5,2},\r
+       {L"NtUserLoadKeyboardLayoutEx", 0x11C6,7},\r
+       {L"NtUserLockWindowStation", 0x11C7,1},\r
+       {L"NtUserLockWindowUpdate", 0x11C8,1},\r
+       {L"NtUserLockWorkStation", 0x11C9,0},\r
+       {L"NtUserMapVirtualKeyEx", 0x11CA,4},\r
+       {L"NtUserMenuItemFromPoint", 0x11CB,4},\r
+       {L"NtUserMessageCall", 0x11CC,7},\r
+       {L"NtUserMinMaximize", 0x11CD,3},\r
+       {L"NtUserMNDragLeave", 0x11CE,0},\r
+       {L"NtUserMNDragOver", 0x11CF,2},\r
+       {L"NtUserModifyUserStartupInfoFlags", 0x11D0,2},\r
+       {L"NtUserMoveWindow", 0x11D1,6},\r
+       {L"NtUserNotifyIMEStatus", 0x11D2,3},\r
+       {L"NtUserNotifyProcessCreate", 0x11D3,4},\r
+       {L"NtUserNotifyWinEvent", 0x11D4,4},\r
+       {L"NtUserOpenClipboard", 0x11D5,2},\r
+       {L"NtUserOpenDesktop", 0x11D6,3},\r
+       {L"NtUserOpenInputDesktop", 0x11D7,3},\r
+       {L"NtUserOpenWindowStation", 0x11D8,2},\r
+       {L"NtUserPaintDesktop", 0x11D9,1},\r
+       {L"NtUserPeekMessage", 0x11DA,5},\r
+       {L"NtUserPostMessage", 0x11DB,4},\r
+       {L"NtUserPostThreadMessage", 0x11DC,4},\r
+       {L"NtUserPrintWindow", 0x11DD,3},\r
+       {L"NtUserProcessConnect", 0x11DE,3},\r
+       {L"NtUserQueryInformationThread", 0x11DF,5},\r
+       {L"NtUserQueryInputContext", 0x11E0,2},\r
+       {L"NtUserQuerySendMessage", 0x11E1,1},\r
+       {L"NtUserQueryUserCounters", 0x11E2,5},\r
+       {L"NtUserQueryWindow", 0x11E3,2},\r
+       {L"NtUserRealChildWindowFromPoint", 0x11E4,3},\r
+       {L"NtUserRealInternalGetMessage", 0x11E5,6},\r
+       {L"NtUserRealWaitMessageEx", 0x11E6,2},\r
+       {L"NtUserRedrawWindow", 0x11E7,4},\r
+       {L"NtUserRegisterClassExWOW", 0x11E8,7},\r
+       {L"NtUserRegisterUserApiHook", 0x11E9,2},\r
+       {L"NtUserRegisterHotKey", 0x11EA,4},\r
+       {L"NtUserRegisterRawInputDevices", 0x11EB,3},\r
+       {L"NtUserRegisterTasklist", 0x11EC,1},\r
+       {L"NtUserRegisterWindowMessage", 0x11ED,1},\r
+       {L"NtUserRemoveMenu", 0x11EE,3},\r
+       {L"NtUserRemoveProp", 0x11EF,2},\r
+       {L"NtUserResolveDesktop", 0x11F0,4},\r
+       {L"NtUserResolveDesktopForWOW", 0x11F1,1},\r
+       {L"NtUserSBGetParms", 0x11F2,4},\r
+       {L"NtUserScrollDC", 0x11F3,7},\r
+       {L"NtUserScrollWindowEx", 0x11F4,8},\r
+       {L"NtUserSelectPalette", 0x11F5,3},\r
+       {L"NtUserSendInput", 0x11F6,3},\r
+       {L"NtUserSetActiveWindow", 0x11F7,1},\r
+       {L"NtUserSetAppImeLevel", 0x11F8,2},\r
+       {L"NtUserSetCapture", 0x11F9,1},\r
+       {L"NtUserSetClassLong", 0x11FA,4},\r
+       {L"NtUserSetClassWord", 0x11FB,3},\r
+       {L"NtUserSetClipboardData", 0x11FC,3},\r
+       {L"NtUserSetClipboardViewer", 0x11FD,1},\r
+       {L"NtUserSetConsoleReserveKeys", 0x11FE,2},\r
+       {L"NtUserSetCursor", 0x11FF,1},\r
+       {L"NtUserSetCursorContents", 0x1200,2},\r
+       {L"NtUserSetCursorIconData", 0x1201,4},\r
+       {L"NtUserSetDbgTag", 0x1202,2},\r
+       {L"NtUserSetFocus", 0x1203,1},\r
+       {L"NtUserSetImeHotKey", 0x1204,5},\r
+       {L"NtUserSetImeInfoEx", 0x1205,1},\r
+       {L"NtUserSetImeOwnerWindow", 0x1206,2},\r
+       {L"NtUserSetInformationProcess", 0x1207,4},\r
+       {L"NtUserSetInformationThread", 0x1208,4},\r
+       {L"NtUserSetInternalWindowPos", 0x1209,4},\r
+       {L"NtUserSetKeyboardState", 0x120A,1},\r
+       {L"NtUserSetLogonNotifyWindow", 0x120B,1},\r
+       {L"NtUserSetMenu", 0x120C,3},\r
+       {L"NtUserSetMenuContextHelpId", 0x120D,2},\r
+       {L"NtUserSetMenuDefaultItem", 0x120E,3},\r
+       {L"NtUserSetMenuFlagRtoL", 0x120F,1},\r
+       {L"NtUserSetObjectInformation", 0x1210,4},\r
+       {L"NtUserSetParent", 0x1211,2},\r
+       {L"NtUserSetProcessWindowStation", 0x1212,1},\r
+       {L"NtUserSetProp", 0x1213,3},\r
+       {L"NtUserSetRipFlags", 0x1214,2},\r
+       {L"NtUserSetScrollInfo", 0x1215,4},\r
+       {L"NtUserSetShellWindowEx", 0x1216,2},\r
+       {L"NtUserSetSysColors", 0x1217,4},\r
+       {L"NtUserSetSystemCursor", 0x1218,2},\r
+       {L"NtUserSetSystemMenu", 0x1219,2},\r
+       {L"NtUserSetSystemTimer", 0x121A,4},\r
+       {L"NtUserSetThreadDesktop", 0x121B,1},\r
+       {L"NtUserSetThreadLayoutHandles", 0x121C,2},\r
+       {L"NtUserSetThreadState", 0x121D,2},\r
+       {L"NtUserSetTimer", 0x121E,4},\r
+       {L"NtUserSetWindowFNID", 0x121F,2},\r
+       {L"NtUserSetWindowLong", 0x1220,4},\r
+       {L"NtUserSetWindowPlacement", 0x1221,2},\r
+       {L"NtUserSetWindowPos", 0x1222,7},\r
+       {L"NtUserSetWindowRgn", 0x1223,3},\r
+       {L"NtUserSetWindowsHookAW", 0x1224,3},\r
+       {L"NtUserSetWindowsHookEx", 0x1225,6},\r
+       {L"NtUserSetWindowStationUser", 0x1226,4},\r
+       {L"NtUserSetWindowWord", 0x1227,3},\r
+       {L"NtUserSetWinEventHook", 0x1228,8},\r
+       {L"NtUserShowCaret", 0x1229,1},\r
+       {L"NtUserShowScrollBar", 0x122A,3},\r
+       {L"NtUserShowWindow", 0x122B,2},\r
+       {L"NtUserShowWindowAsync", 0x122C,2},\r
+       {L"NtUserSoundSentry", 0x122D,0},\r
+       {L"NtUserSwitchDesktop", 0x122E,1},\r
+       {L"NtUserSystemParametersInfo", 0x122F,4},\r
+       {L"NtUserTestForInteractiveUser", 0x1230,1},\r
+       {L"NtUserThunkedMenuInfo", 0x1231,2},\r
+       {L"NtUserThunkedMenuItemInfo", 0x1232,6},\r
+       {L"NtUserToUnicodeEx", 0x1233,7},\r
+       {L"NtUserTrackMouseEvent", 0x1234,1},\r
+       {L"NtUserTrackPopupMenuEx", 0x1235,6},\r
+       {L"NtUserCalcMenuBar", 0x1236,5},\r
+       {L"NtUserPaintMenuBar", 0x1237,6},\r
+       {L"NtUserTranslateAccelerator", 0x1238,3},\r
+       {L"NtUserTranslateMessage", 0x1239,2},\r
+       {L"NtUserUnhookWindowsHookEx", 0x123A,1},\r
+       {L"NtUserUnhookWinEvent", 0x123B,1},\r
+       {L"NtUserUnloadKeyboardLayout", 0x123C,1},\r
+       {L"NtUserUnlockWindowStation", 0x123D,1},\r
+       {L"NtUserUnregisterClass", 0x123E,3},\r
+       {L"NtUserUnregisterUserApiHook", 0x123F,0},\r
+       {L"NtUserUnregisterHotKey", 0x1240,2},\r
+       {L"NtUserUpdateInputContext", 0x1241,3},\r
+       {L"NtUserUpdateInstance", 0x1242,3},\r
+       {L"NtUserUpdateLayeredWindow", 0x1243,9},\r
+       {L"NtUserGetLayeredWindowAttributes", 0x1244,4},\r
+       {L"NtUserSetLayeredWindowAttributes", 0x1245,4},\r
+       {L"NtUserUpdatePerUserSystemParameters", 0x1246,2},\r
+       {L"NtUserUserHandleGrantAccess", 0x1247,3},\r
+       {L"NtUserValidateHandleSecure", 0x1248,1},\r
+       {L"NtUserValidateRect", 0x1249,2},\r
+       {L"Nt_Unknown", 0x124a, 3},\r
+       {L"NtUserVkKeyScanEx", 0x124b,3},\r
+       {L"NtUserWaitForInputIdle", 0x124c,3},\r
+       {L"NtUserWaitForMsgAndEvent", 0x124d,1},\r
+       {L"NtUserWaitMessage", 0x124e,0},\r
+       {L"NtUserWin32PoolAllocationStats", 0x124f,6},\r
+       {L"NtUserWindowFromPoint", 0x1250,2},\r
+       {L"NtUserYieldTask", 0x1251,0},\r
+       {L"NtUserRemoteConnect", 0x1252,3},\r
+       {L"NtUserRemoteRedrawRectangle", 0x1253,4},\r
+       {L"NtUserRemoteRedrawScreen", 0x1254,0},\r
+       {L"NtUserRemoteStopScreenUpdates", 0x1255,0},\r
+       {L"NtUserCtxDisplayIOCtl", 0x1256,3},\r
+       {L"NtGdiEngAssociateSurface", 0x1257,3},\r
+       {L"NtGdiEngCreateBitmap", 0x1258,6},\r
+       {L"NtGdiEngCreateDeviceSurface", 0x1259,4},\r
+       {L"NtGdiEngCreateDeviceBitmap", 0x125a,4},\r
+       {L"NtGdiEngCreatePalette", 0x125b,6},\r
+       {L"NtGdiEngComputeGlyphSet", 0x125c,3},\r
+       {L"NtGdiEngCopyBits", 0x125d,6},\r
+       {L"NtGdiEngDeletePalette", 0x125e,1},\r
+       {L"NtGdiEngDeleteSurface", 0x125f,1},\r
+       {L"NtGdiEngEraseSurface", 0x1260,3},\r
+       {L"NtGdiEngUnlockSurface", 0x1261,1},\r
+       {L"NtGdiEngLockSurface", 0x1262,1},\r
+       {L"NtGdiEngBitBlt", 0x1263,11},\r
+       {L"NtGdiEngStretchBlt", 0x1264,11},\r
+       {L"NtGdiEngPlgBlt", 0x1265,11},\r
+       {L"NtGdiEngMarkBandingSurface", 0x1266,1},\r
+       {L"NtGdiEngStrokePath", 0x1267,8},\r
+       {L"NtGdiEngFillPath", 0x1268,7},\r
+       {L"NtGdiEngStrokeAndFillPath", 0x1269,10},\r
+       {L"NtGdiEngPaint", 0x126a,5},\r
+       {L"NtGdiEngLineTo", 0x126b,9},\r
+       {L"NtGdiEngAlphaBlend", 0x126c,7},\r
+       {L"NtGdiEngGradientFill", 0x126d,10},\r
+       {L"NtGdiEngTransparentBlt", 0x126e,8},\r
+       {L"NtGdiEngTextOut", 0x126f,10},\r
+       {L"NtGdiEngStretchBltROP", 0x1270,13},\r
+       {L"NtGdiXLATEOBJ_cGetPalette", 0x1271,4},\r
+       {L"NtGdiXLATEOBJ_iXlate", 0x1272,2},\r
+       {L"NtGdiXLATEOBJ_hGetColorTransform", 0x1273,1},\r
+       {L"NtGdiCLIPOBJ_bEnum", 0x1274,3},\r
+       {L"NtGdiCLIPOBJ_cEnumStart", 0x1275,5},\r
+       {L"NtGdiCLIPOBJ_ppoGetPath", 0x1276,1},\r
+       {L"NtGdiEngDeletePath", 0x1277,1},\r
+       {L"NtGdiEngCreateClip", 0x1278,0},\r
+       {L"NtGdiEngDeleteClip", 0x1279,1},\r
+       {L"NtGdiBRUSHOBJ_ulGetBrushColor", 0x127a,1},\r
+       {L"NtGdiBRUSHOBJ_pvAllocRbrush", 0x127b,2},\r
+       {L"NtGdiBRUSHOBJ_pvGetRbrush", 0x127c,1},\r
+       {L"NtGdiBRUSHOBJ_hGetColorTransform", 0x127d,1},\r
+       {L"NtGdiXFORMOBJ_bApplyXform", 0x127e,5},\r
+       {L"NtGdiXFORMOBJ_iGetXform", 0x127f,2},\r
+       {L"NtGdiFONTOBJ_vGetInfo", 0x1280,3},\r
+       {L"NtGdiFONTOBJ_pxoGetXform", 0x1281,1},\r
+       {L"NtGdiFONTOBJ_cGetGlyphs", 0x1282,5},\r
+       {L"NtGdiFONTOBJ_pifi", 0x1283,1},\r
+       {L"NtGdiFONTOBJ_pfdg", 0x1284,1},\r
+       {L"NtGdiFONTOBJ_pQueryGlyphAttrs", 0x1285,2},\r
+       {L"NtGdiFONTOBJ_pvTrueTypeFontFile", 0x1286,2},\r
+       {L"NtGdiFONTOBJ_cGetAllGlyphHandles", 0x1287,2},\r
+       {L"NtGdiSTROBJ_bEnum", 0x1288,3},\r
+       {L"NtGdiSTROBJ_bEnumPositionsOnly", 0x1289,3},\r
+       {L"NtGdiSTROBJ_bGetAdvanceWidths", 0x128a,4},\r
+       {L"NtGdiSTROBJ_vEnumStart", 0x128b,1},\r
+       {L"NtGdiSTROBJ_dwGetCodePage", 0x128c,1},\r
+       {L"NtGdiPATHOBJ_vGetBounds", 0x128d,2},\r
+       {L"NtGdiPATHOBJ_bEnum", 0x128e,2},\r
+       {L"NtGdiPATHOBJ_vEnumStart", 0x128f,1},\r
+       {L"NtGdiPATHOBJ_vEnumStartClipLines", 0x1290,4},\r
+       {L"NtGdiPATHOBJ_bEnumClipLines", 0x1291,3},\r
+       {L"NtGdiGetDhpdev", 0x1292,1},\r
+       {L"NtGdiEngCheckAbort", 0x1293,1},\r
+       {L"NtGdiHT_Get8BPPFormatPalette", 0x1294,4},\r
+       {L"NtGdiHT_Get8BPPMaskPalette", 0x1295,6},\r
+       {L"NtGdiUpdateTransform", 0x1296,1},\r
+       {L"NtGdiSetPUMPDOBJ", 0x1297,4},\r
+       {L"NtGdiBRUSHOBJ_DeleteRbrush", 0x1298,2},\r
+       {L"NtGdiUMPDEngFreeUserMem", 0x1299,1},\r
+       {L"NtGdiDrawStream", 0x129a,3},\r
+       {NULL, 0, 0}\r
+};\r
+\r
index 0b87837..eb260a4 100644 (file)
@@ -16,3 +16,6 @@
 <directory name="winetests">\r
        <xi:include href="winetests/directory.rbuild" />\r
 </directory>\r
+<directory name="apitests">\r
+       <xi:include href="apitests/directory.rbuild" />\r
+</directory>\r