diff --git a/rostests/apitests/apitest.c b/rostests/apitests/apitest.c
index b0e9eec9ed3..e1f2be54be3 100644
--- a/rostests/apitests/apitest.c
+++ b/rostests/apitests/apitest.c
@@ -1,169 +1,169 @@
-#include "apitest.h"
-
-const char szFileHeader[] = "
\n\n\n\n";
-const char szTableHeader[] = "| Function | Status | Tests (all/passed/failed) | Regressions |
";
-const char szFileFooter[] = "
";
-
-void
-OutputUsage(LPWSTR pszName)
-{
- printf("\nUsage:\n\n");
- printf("%ls.exe - perform individual test\n", pszName);
- printf("%ls.exe all - perform all tests\n", pszName);
- printf("%ls.exe status - create api status file\n", pszName);
- printf("%ls.exe -r ... - perform regression testing\n", pszName);
- printf("\n");
-}
-
-BOOL
-WriteFileHeader(UINT hFile, LPWSTR pszModule)
-{
- char szHeader[100];
-
- _write(hFile, szFileHeader, strlen(szFileHeader));
- sprintf(szHeader, "Test results for %ls
", pszModule);
- _write(hFile, szHeader, strlen(szHeader));
- _write(hFile, szTableHeader, strlen(szTableHeader));
- return TRUE;
-}
-
-BOOL
-WriteRow(UINT hFile, LPWSTR pszFunction, PTESTINFO pti)
-{
- char szLine[500];
-
- sprintf(szLine, "| %ls | ", pszFunction);
-
- switch(pti->nApiStatus)
- {
- case APISTATUS_NOT_FOUND:
- strcat(szLine, "not found | ");
- break;
- case APISTATUS_UNIMPLEMENTED:
- strcat(szLine, "unimplemented | ");
- break;
- case APISTATUS_ASSERTION_FAILED:
- strcat(szLine, "assertion failed | ");
- break;
- case APISTATUS_REGRESSION:
- strcat(szLine, "Regression! | ");
- break;
- case APISTATUS_NORMAL:
- strcat(szLine, "Implemented | ");
- break;
- }
-
- sprintf(szLine + strlen(szLine), "%d / %d / %d | %d |
\n",
- pti->passed+pti->failed, pti->passed, pti->failed, pti->rfailed);
-
- _write(hFile, szLine, strlen(szLine));
- return TRUE;
-}
-
-int
-TestMain(LPWSTR pszName, LPWSTR pszModule)
-{
- INT argc, i, j;
- LPWSTR *argv;
- TESTINFO ti;
- INT opassed, ofailed, orfailed;
- BOOL bAll, bStatus;
- UINT hFile = 0;
-
- ti.bRegress = FALSE;
- bAll = FALSE;
- bStatus = FALSE;
- opassed = ofailed = orfailed = 0;
-
- argv = CommandLineToArgvW(GetCommandLineW(), &argc);
-
- if (argc < 2)
- {
- OutputUsage(pszName);
- return 0;
- }
-
- /* Get options */
- for (i = 1; i < argc; i++)
- {
- if (_wcsicmp(argv[i], L"-r") == 0)
- {
- ti.bRegress = TRUE;
- }
- else if (_wcsicmp(argv[i], L"all") == 0)
- {
- bAll = TRUE;
- }
- else if (_wcsicmp(argv[i], L"status") == 0)
- {
- bAll = TRUE;
- bStatus = TRUE;
- }
- }
-
- if (bStatus)
- {
- ti.bRegress = TRUE;
- char szOutputFile[MAX_PATH];
- wsprintf(szOutputFile, "%ls.html", pszName);
- hFile = _open(szOutputFile, O_CREAT | O_TRUNC | O_RDWR, 00700);
- if (hFile == -1)
- {
- printf("Could not create output file.\n");
- return 0;
- }
- WriteFileHeader(hFile, pszModule);
- }
-
- for (i = 0; i < NumTests(); i++)
- {
- for (j = 1; j < argc; j++)
- {
- if (bAll || _wcsicmp(argv[j], TestList[i].Test) == 0)
- {
- ti.passed = 0;
- ti.failed = 0;
- ti.rfailed = 0;
- if (!IsFunctionPresent(TestList[i].Test))
- {
- printf("Function %ls was not found!\n", TestList[i].Test);
- ti.nApiStatus = APISTATUS_NOT_FOUND;
- }
- else
- {
- printf("Executing test: %ls\n", TestList[i].Test);
- ti.nApiStatus = TestList[i].Proc(&ti);
- opassed += ti.passed;
- ofailed += ti.failed;
- orfailed += ti.rfailed;
- printf(" tests: %d, passed: %d, failed: %d\n\n", ti.passed+ti.failed, ti.passed, ti.failed);
- }
- if (bStatus)
- {
- if (ti.rfailed > 0)
- ti.nApiStatus = APISTATUS_REGRESSION;
- WriteRow(hFile, TestList[i].Test, &ti);
- }
- break;
- }
- }
- }
-
- printf("Overall:\n");
- printf(" tests: %d, passed: %d, failed: %d\n\n", opassed+ofailed, opassed, ofailed);
- if (ti.bRegress)
- {
- printf(" regressions: %d\n", orfailed);
- }
-
- if (bStatus)
- {
- _write(hFile, szFileFooter, strlen(szFileFooter));
- _close(hFile);
- }
-
- if (ti.bRegress)
- return ti.rfailed;
-
- return ti.failed;
-}
+#include "apitest.h"
+
+const char szFileHeader[] = "\n\n\n\n";
+const char szTableHeader[] = "| Function | Status | Tests (all/passed/failed) | Regressions |
";
+const char szFileFooter[] = "
";
+
+void
+OutputUsage(LPWSTR pszName)
+{
+ printf("\nUsage:\n\n");
+ printf("%ls.exe - perform individual test\n", pszName);
+ printf("%ls.exe all - perform all tests\n", pszName);
+ printf("%ls.exe status - create api status file\n", pszName);
+ printf("%ls.exe -r ... - perform regression testing\n", pszName);
+ printf("\n");
+}
+
+BOOL
+WriteFileHeader(UINT hFile, LPWSTR pszModule)
+{
+ char szHeader[100];
+
+ _write(hFile, szFileHeader, strlen(szFileHeader));
+ sprintf(szHeader, "Test results for %ls
", pszModule);
+ _write(hFile, szHeader, strlen(szHeader));
+ _write(hFile, szTableHeader, strlen(szTableHeader));
+ return TRUE;
+}
+
+BOOL
+WriteRow(UINT hFile, LPWSTR pszFunction, PTESTINFO pti)
+{
+ char szLine[500];
+
+ sprintf(szLine, "| %ls | ", pszFunction);
+
+ switch(pti->nApiStatus)
+ {
+ case APISTATUS_NOT_FOUND:
+ strcat(szLine, "not found | ");
+ break;
+ case APISTATUS_UNIMPLEMENTED:
+ strcat(szLine, "unimplemented | ");
+ break;
+ case APISTATUS_ASSERTION_FAILED:
+ strcat(szLine, "assertion failed | ");
+ break;
+ case APISTATUS_REGRESSION:
+ strcat(szLine, "Regression! | ");
+ break;
+ case APISTATUS_NORMAL:
+ strcat(szLine, "Implemented | ");
+ break;
+ }
+
+ sprintf(szLine + strlen(szLine), "%d / %d / %d | %d |
\n",
+ pti->passed+pti->failed, pti->passed, pti->failed, pti->rfailed);
+
+ _write(hFile, szLine, strlen(szLine));
+ return TRUE;
+}
+
+int
+TestMain(LPWSTR pszName, LPWSTR pszModule)
+{
+ INT argc, i, j;
+ LPWSTR *argv;
+ TESTINFO ti;
+ INT opassed, ofailed, orfailed;
+ BOOL bAll, bStatus;
+ UINT hFile = 0;
+
+ ti.bRegress = FALSE;
+ bAll = FALSE;
+ bStatus = FALSE;
+ opassed = ofailed = orfailed = 0;
+
+ argv = CommandLineToArgvW(GetCommandLineW(), &argc);
+
+ if (argc < 2)
+ {
+ OutputUsage(pszName);
+ return 0;
+ }
+
+ /* Get options */
+ for (i = 1; i < argc; i++)
+ {
+ if (_wcsicmp(argv[i], L"-r") == 0)
+ {
+ ti.bRegress = TRUE;
+ }
+ else if (_wcsicmp(argv[i], L"all") == 0)
+ {
+ bAll = TRUE;
+ }
+ else if (_wcsicmp(argv[i], L"status") == 0)
+ {
+ bAll = TRUE;
+ bStatus = TRUE;
+ }
+ }
+
+ if (bStatus)
+ {
+ ti.bRegress = TRUE;
+ char szOutputFile[MAX_PATH];
+ wsprintf(szOutputFile, "%ls.html", pszName);
+ hFile = _open(szOutputFile, O_CREAT | O_TRUNC | O_RDWR, 00700);
+ if (hFile == -1)
+ {
+ printf("Could not create output file.\n");
+ return 0;
+ }
+ WriteFileHeader(hFile, pszModule);
+ }
+
+ for (i = 0; i < NumTests(); i++)
+ {
+ for (j = 1; j < argc; j++)
+ {
+ if (bAll || _wcsicmp(argv[j], TestList[i].Test) == 0)
+ {
+ ti.passed = 0;
+ ti.failed = 0;
+ ti.rfailed = 0;
+ if (!IsFunctionPresent(TestList[i].Test))
+ {
+ printf("Function %ls was not found!\n", TestList[i].Test);
+ ti.nApiStatus = APISTATUS_NOT_FOUND;
+ }
+ else
+ {
+ printf("Executing test: %ls\n", TestList[i].Test);
+ ti.nApiStatus = TestList[i].Proc(&ti);
+ opassed += ti.passed;
+ ofailed += ti.failed;
+ orfailed += ti.rfailed;
+ printf(" tests: %d, passed: %d, failed: %d\n\n", ti.passed+ti.failed, ti.passed, ti.failed);
+ }
+ if (bStatus)
+ {
+ if (ti.rfailed > 0)
+ ti.nApiStatus = APISTATUS_REGRESSION;
+ WriteRow(hFile, TestList[i].Test, &ti);
+ }
+ break;
+ }
+ }
+ }
+
+ printf("Overall:\n");
+ printf(" tests: %d, passed: %d, failed: %d\n\n", opassed+ofailed, opassed, ofailed);
+ if (ti.bRegress)
+ {
+ printf(" regressions: %d\n", orfailed);
+ }
+
+ if (bStatus)
+ {
+ _write(hFile, szFileFooter, strlen(szFileFooter));
+ _close(hFile);
+ }
+
+ if (ti.bRegress)
+ return ti.rfailed;
+
+ return ti.failed;
+}
diff --git a/rostests/apitests/apitest.h b/rostests/apitests/apitest.h
index fb0a0fb9b85..2180a020c81 100644
--- a/rostests/apitests/apitest.h
+++ b/rostests/apitests/apitest.h
@@ -1,98 +1,98 @@
-#ifndef _APITEST_H
-#define _APITEST_H
-
-#include
-#include
-#include
-#include
-#include
-
-#define open _open
-
-#define APISTATUS_NORMAL 0
-#define APISTATUS_NOT_FOUND 1
-#define APISTATUS_UNIMPLEMENTED 2
-#define APISTATUS_ASSERTION_FAILED 3
-#define APISTATUS_REGRESSION 4
-
-/* type definitions */
-
-typedef struct tagTESTINFO
-{
- INT passed;
- INT failed;
- INT rfailed;
- BOOL bRegress;
- INT nApiStatus;
-} TESTINFO, *PTESTINFO;
-
-typedef INT (*TESTPROC)(PTESTINFO);
-
-typedef struct tagTEST
-{
- WCHAR* Test;
- TESTPROC Proc;
-} TESTENTRY, *PTESTENTRY;
-
-
-/* macros */
-
-#define TEST(x) \
- if (pti->bRegress) \
- { \
- if (x)\
- {\
- (pti->passed)++;\
- printf("non-rtest succeeded in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
- } else {\
- (pti->failed)++;\
- } \
- } \
- else \
- { \
- if (x)\
- {\
- (pti->passed)++;\
- } else {\
- (pti->failed)++;\
- printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
- } \
- }
-
-#define RTEST(x) \
- if (pti->bRegress) \
- { \
- if (x)\
- {\
- (pti->passed)++;\
- } else {\
- (pti->failed)++;\
- (pti->rfailed)++;\
- printf("rtest failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
- } \
- } \
- else \
- { \
- if (x)\
- {\
- (pti->passed)++;\
- } else {\
- (pti->failed)++;\
- printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
- } \
- }
-
-#undef ASSERT
-#define ASSERT(x) \
- if (!(x)) \
- { \
- printf("Assertion failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
- return APISTATUS_ASSERTION_FAILED; \
- }
-
-int TestMain(LPWSTR pszExe, LPWSTR pszModule);
-extern TESTENTRY TestList[];
-INT NumTests(void);
-BOOL IsFunctionPresent(LPWSTR lpszFunction);
-
-#endif /* _APITEST_H */
+#ifndef _APITEST_H
+#define _APITEST_H
+
+#include
+#include
+#include
+#include
+#include
+
+#define open _open
+
+#define APISTATUS_NORMAL 0
+#define APISTATUS_NOT_FOUND 1
+#define APISTATUS_UNIMPLEMENTED 2
+#define APISTATUS_ASSERTION_FAILED 3
+#define APISTATUS_REGRESSION 4
+
+/* type definitions */
+
+typedef struct tagTESTINFO
+{
+ INT passed;
+ INT failed;
+ INT rfailed;
+ BOOL bRegress;
+ INT nApiStatus;
+} TESTINFO, *PTESTINFO;
+
+typedef INT (*TESTPROC)(PTESTINFO);
+
+typedef struct tagTEST
+{
+ WCHAR* Test;
+ TESTPROC Proc;
+} TESTENTRY, *PTESTENTRY;
+
+
+/* macros */
+
+#define TEST(x) \
+ if (pti->bRegress) \
+ { \
+ if (x)\
+ {\
+ (pti->passed)++;\
+ printf("non-rtest succeeded in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+ } else {\
+ (pti->failed)++;\
+ } \
+ } \
+ else \
+ { \
+ if (x)\
+ {\
+ (pti->passed)++;\
+ } else {\
+ (pti->failed)++;\
+ printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+ } \
+ }
+
+#define RTEST(x) \
+ if (pti->bRegress) \
+ { \
+ if (x)\
+ {\
+ (pti->passed)++;\
+ } else {\
+ (pti->failed)++;\
+ (pti->rfailed)++;\
+ printf("rtest failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+ } \
+ } \
+ else \
+ { \
+ if (x)\
+ {\
+ (pti->passed)++;\
+ } else {\
+ (pti->failed)++;\
+ printf("test failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+ } \
+ }
+
+#undef ASSERT
+#define ASSERT(x) \
+ if (!(x)) \
+ { \
+ printf("Assertion failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+ return APISTATUS_ASSERTION_FAILED; \
+ }
+
+int TestMain(LPWSTR pszExe, LPWSTR pszModule);
+extern TESTENTRY TestList[];
+INT NumTests(void);
+BOOL IsFunctionPresent(LPWSTR lpszFunction);
+
+#endif /* _APITEST_H */
diff --git a/rostests/apitests/gdi32api/gdi.h b/rostests/apitests/gdi32api/gdi.h
index 3e6520d6f5b..72fd7a126de 100644
--- a/rostests/apitests/gdi32api/gdi.h
+++ b/rostests/apitests/gdi32api/gdi.h
@@ -1,63 +1,63 @@
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#endif
-
-
-typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void);
-
-/* GDI handle table can hold 0x4000 handles */
-#define GDI_HANDLE_COUNT 0x10000
-#define GDI_GLOBAL_PROCESS (0x0)
-
-/* Handle Masks and shifts */
-#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)
-#define GDI_HANDLE_TYPE_MASK 0x007f0000
-#define GDI_HANDLE_STOCK_MASK 0x00800000
-#define GDI_HANDLE_REUSE_MASK 0xff000000
-#define GDI_HANDLE_REUSECNT_SHIFT 24
-
-
-#define GDI_OBJECT_TYPE_DC 0x00010000
-#define GDI_OBJECT_TYPE_REGION 0x00040000
-#define GDI_OBJECT_TYPE_BITMAP 0x00050000
-#define GDI_OBJECT_TYPE_PALETTE 0x00080000
-#define GDI_OBJECT_TYPE_FONT 0x000a0000
-#define GDI_OBJECT_TYPE_BRUSH 0x00100000
-#define GDI_OBJECT_TYPE_EMF 0x00210000
-#define GDI_OBJECT_TYPE_PEN 0x00300000
-#define GDI_OBJECT_TYPE_EXTPEN 0x00500000
-#define GDI_OBJECT_TYPE_COLORSPACE 0x00090000
-#define GDI_OBJECT_TYPE_METADC 0x00660000
-#define GDI_OBJECT_TYPE_METAFILE 0x00260000
-#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00460000
-/* Following object types made up for ROS */
-#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000
-#define GDI_OBJECT_TYPE_MEMDC 0x00750000
-#define GDI_OBJECT_TYPE_DCE 0x00770000
-#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000
-/** Not really an object type. Forces GDI_FreeObj to be silent. */
-#define GDI_OBJECT_TYPE_SILENT 0x80000000
-
-
-
-/* Number Representation */
-
-typedef LONG FIX;
-
-
-
-
-HDC WINAPI GdiConvertBitmap(HDC hdc);
-HBRUSH WINAPI GdiConvertBrush(HBRUSH hbr);
-HDC WINAPI GdiConvertDC(HDC hdc);
-HFONT WINAPI GdiConvertFont(HFONT hfont);
-HPALETTE WINAPI GdiConvertPalette(HPALETTE hpal);
-HRGN WINAPI GdiConvertRegion(HRGN hregion);
-HBRUSH WINAPI GdiGetLocalBrush(HBRUSH hbr);
-HDC WINAPI GdiGetLocalDC(HDC hdc);
-BOOL WINAPI GdiDeleteLocalDC(HDC hdc);
-BOOL WINAPI GdiReleaseLocalDC(HDC hdc);
-BOOL WINAPI GdiSetAttrs(HDC hdc);
-
-
-
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+
+
+typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void);
+
+/* GDI handle table can hold 0x4000 handles */
+#define GDI_HANDLE_COUNT 0x10000
+#define GDI_GLOBAL_PROCESS (0x0)
+
+/* Handle Masks and shifts */
+#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)
+#define GDI_HANDLE_TYPE_MASK 0x007f0000
+#define GDI_HANDLE_STOCK_MASK 0x00800000
+#define GDI_HANDLE_REUSE_MASK 0xff000000
+#define GDI_HANDLE_REUSECNT_SHIFT 24
+
+
+#define GDI_OBJECT_TYPE_DC 0x00010000
+#define GDI_OBJECT_TYPE_REGION 0x00040000
+#define GDI_OBJECT_TYPE_BITMAP 0x00050000
+#define GDI_OBJECT_TYPE_PALETTE 0x00080000
+#define GDI_OBJECT_TYPE_FONT 0x000a0000
+#define GDI_OBJECT_TYPE_BRUSH 0x00100000
+#define GDI_OBJECT_TYPE_EMF 0x00210000
+#define GDI_OBJECT_TYPE_PEN 0x00300000
+#define GDI_OBJECT_TYPE_EXTPEN 0x00500000
+#define GDI_OBJECT_TYPE_COLORSPACE 0x00090000
+#define GDI_OBJECT_TYPE_METADC 0x00660000
+#define GDI_OBJECT_TYPE_METAFILE 0x00260000
+#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00460000
+/* Following object types made up for ROS */
+#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000
+#define GDI_OBJECT_TYPE_MEMDC 0x00750000
+#define GDI_OBJECT_TYPE_DCE 0x00770000
+#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000
+/** Not really an object type. Forces GDI_FreeObj to be silent. */
+#define GDI_OBJECT_TYPE_SILENT 0x80000000
+
+
+
+/* Number Representation */
+
+typedef LONG FIX;
+
+
+
+
+HDC WINAPI GdiConvertBitmap(HDC hdc);
+HBRUSH WINAPI GdiConvertBrush(HBRUSH hbr);
+HDC WINAPI GdiConvertDC(HDC hdc);
+HFONT WINAPI GdiConvertFont(HFONT hfont);
+HPALETTE WINAPI GdiConvertPalette(HPALETTE hpal);
+HRGN WINAPI GdiConvertRegion(HRGN hregion);
+HBRUSH WINAPI GdiGetLocalBrush(HBRUSH hbr);
+HDC WINAPI GdiGetLocalDC(HDC hdc);
+BOOL WINAPI GdiDeleteLocalDC(HDC hdc);
+BOOL WINAPI GdiReleaseLocalDC(HDC hdc);
+BOOL WINAPI GdiSetAttrs(HDC hdc);
+
+
+
diff --git a/rostests/apitests/gdi32api/gdi32api.c b/rostests/apitests/gdi32api/gdi32api.c
index da634965591..ab8889503a5 100644
--- a/rostests/apitests/gdi32api/gdi32api.c
+++ b/rostests/apitests/gdi32api/gdi32api.c
@@ -1,36 +1,36 @@
-#include "gdi32api.h"
-
-HINSTANCE g_hInstance;
-PGDI_TABLE_ENTRY GdiHandleTable;
-
-BOOL
-IsFunctionPresent(LPWSTR lpszFunction)
-{
- return TRUE;
-}
-
-static
-PGDI_TABLE_ENTRY
-MyGdiQueryTable()
-{
- PTEB pTeb = NtCurrentTeb();
- PPEB pPeb = pTeb->ProcessEnvironmentBlock;
- return pPeb->GdiSharedHandleTable;
-}
-
-int APIENTRY
-WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
-{
- g_hInstance = hInstance;
-
- GdiHandleTable = MyGdiQueryTable();
- if(!GdiHandleTable)
- {
- return -1;
- }
-
- return TestMain(L"gdi32api", L"gdi32.dll");
-}
+#include "gdi32api.h"
+
+HINSTANCE g_hInstance;
+PGDI_TABLE_ENTRY GdiHandleTable;
+
+BOOL
+IsFunctionPresent(LPWSTR lpszFunction)
+{
+ return TRUE;
+}
+
+static
+PGDI_TABLE_ENTRY
+MyGdiQueryTable()
+{
+ PTEB pTeb = NtCurrentTeb();
+ PPEB pPeb = pTeb->ProcessEnvironmentBlock;
+ return pPeb->GdiSharedHandleTable;
+}
+
+int APIENTRY
+WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ g_hInstance = hInstance;
+
+ GdiHandleTable = MyGdiQueryTable();
+ if(!GdiHandleTable)
+ {
+ return -1;
+ }
+
+ return TestMain(L"gdi32api", L"gdi32.dll");
+}
diff --git a/rostests/apitests/gdi32api/gdi32api.h b/rostests/apitests/gdi32api/gdi32api.h
index f65b6db22c9..73ec2a95a5b 100644
--- a/rostests/apitests/gdi32api/gdi32api.h
+++ b/rostests/apitests/gdi32api/gdi32api.h
@@ -1,26 +1,26 @@
-#ifndef _GDITEST_H
-#define _GDITEST_H
-
-#define WIN32_NO_STATUS
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-/* Public Win32K Headers */
-#include
-#include
-#include
-
-#include "../apitest.h"
-#include "gdi.h"
-
-extern HINSTANCE g_hInstance;
-extern PGDI_TABLE_ENTRY GdiHandleTable;
-
-#endif /* _GDITEST_H */
-
-/* EOF */
+#ifndef _GDITEST_H
+#define _GDITEST_H
+
+#define WIN32_NO_STATUS
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+/* Public Win32K Headers */
+#include
+#include
+#include
+
+#include "../apitest.h"
+#include "gdi.h"
+
+extern HINSTANCE g_hInstance;
+extern PGDI_TABLE_ENTRY GdiHandleTable;
+
+#endif /* _GDITEST_H */
+
+/* EOF */
diff --git a/rostests/apitests/gdi32api/gdi32api.rbuild b/rostests/apitests/gdi32api/gdi32api.rbuild
index 99e4358e2a8..a045a7965ff 100644
--- a/rostests/apitests/gdi32api/gdi32api.rbuild
+++ b/rostests/apitests/gdi32api/gdi32api.rbuild
@@ -1,12 +1,12 @@
-
- .
-
- 0x0501
- apitest
- kernel32
- user32
- gdi32
- shell32
- gdi32api.c
- testlist.c
-
+
+ .
+
+ 0x0501
+ apitest
+ kernel32
+ user32
+ gdi32
+ shell32
+ gdi32api.c
+ testlist.c
+
diff --git a/rostests/apitests/gdi32api/testlist.c b/rostests/apitests/gdi32api/testlist.c
index 6a9a78c6c34..287420994d2 100644
--- a/rostests/apitests/gdi32api/testlist.c
+++ b/rostests/apitests/gdi32api/testlist.c
@@ -1,94 +1,94 @@
-#ifndef _GDITESTLIST_H
-#define _GDITESTLIST_H
-
-#include "gdi32api.h"
-
-/* include the tests */
-#include "tests/AddFontResource.c"
-#include "tests/AddFontResourceEx.c"
-#include "tests/CreateBitmapIndirect.c"
-#include "tests/CreateCompatibleDC.c"
-#include "tests/CreateFont.c"
-#include "tests/CreatePen.c"
-#include "tests/CreateRectRgn.c"
-#include "tests/EngCreateSemaphore.c"
-#include "tests/EngAcquireSemaphore.c"
-#include "tests/EngDeleteSemaphore.c"
-#include "tests/EngReleaseSemaphore.c"
-#include "tests/ExtCreatePen.c"
-#include "tests/GdiConvertBitmap.c"
-#include "tests/GdiConvertBrush.c"
-#include "tests/GdiConvertDC.c"
-#include "tests/GdiConvertFont.c"
-#include "tests/GdiConvertPalette.c"
-#include "tests/GdiConvertRegion.c"
-#include "tests/GdiDeleteLocalDC.c"
-#include "tests/GdiGetLocalBrush.c"
-#include "tests/GdiGetLocalDC.c"
-#include "tests/GdiReleaseLocalDC.c"
-#include "tests/GdiSetAttrs.c"
-#include "tests/GetClipRgn.c"
-#include "tests/GetCurrentObject.c"
-#include "tests/GetDIBits.c"
-#include "tests/GetObject.c"
-#include "tests/GetStockObject.c"
-#include "tests/SelectObject.c"
-#include "tests/SetDCPenColor.c"
-#include "tests/SetSysColors.c"
-#include "tests/SetWorldTransform.c"
-
-
-
-
-
-
-
-
-
-
-/* The List of tests */
-TESTENTRY TestList[] =
-{
- { L"AddFontResourceA", Test_AddFontResourceA },
- { L"AddFontResourceEx", Test_AddFontResourceEx },
- { L"CreateBitmapIndirect", Test_CreateBitmapIndirect },
- { L"CreateCompatibleDC", Test_CreateCompatibleDC },
- { L"CreateFont", Test_CreateFont },
- { L"CreatePen", Test_CreatePen },
- { L"EngCreateSemaphore", Test_EngCreateSemaphore },
- { L"EngAcquireSemaphore", Test_EngAcquireSemaphore },
- { L"EngDeleteSemaphore", Test_EngDeleteSemaphore },
- { L"EngReleaseSemaphore", Test_EngReleaseSemaphore },
- { L"CreateRectRgn", Test_CreateRectRgn },
- { L"ExtCreatePen", Test_ExtCreatePen },
- { L"GdiConvertBitmap", Test_GdiConvertBitmap },
- { L"GdiConvertBrush", Test_GdiConvertBrush },
- { L"GdiConvertBrush", Test_GdiConvertDC },
- { L"GdiConvertFont", Test_GdiConvertFont },
- { L"GdiConvertPalette", Test_GdiConvertPalette },
- { L"GdiConvertRegion", Test_GdiConvertRegion },
- { L"GdiDeleteLocalDC", Test_GdiDeleteLocalDC },
- { L"GdiGetLocalBrush", Test_GdiGetLocalBrush },
- { L"GdiGetLocalDC", Test_GdiGetLocalDC },
- { L"GdiReleaseLocalDC", Test_GdiReleaseLocalDC },
- { L"GdiSetAttrs", Test_GdiSetAttrs },
- { L"GetClipRgn", Test_GetClipRgn },
- { L"GetCurrentObject", Test_GetCurrentObject },
- { L"GetDIBits", Test_GetDIBits },
- { L"GetObject", Test_GetObject },
- { L"GetStockObject", Test_GetStockObject },
- { L"SelectObject", Test_SelectObject },
- { L"SetDCPenColor", Test_SetDCPenColor },
- { L"SetSysColors", Test_SetSysColors },
- { L"SetWorldTransform", Test_SetWorldTransform },
-};
-
-/* The function that gives us the number of tests */
-INT NumTests(void)
-{
- return sizeof(TestList) / sizeof(TESTENTRY);
-}
-
-#endif /* _GDITESTLIST_H */
-
-/* EOF */
+#ifndef _GDITESTLIST_H
+#define _GDITESTLIST_H
+
+#include "gdi32api.h"
+
+/* include the tests */
+#include "tests/AddFontResource.c"
+#include "tests/AddFontResourceEx.c"
+#include "tests/CreateBitmapIndirect.c"
+#include "tests/CreateCompatibleDC.c"
+#include "tests/CreateFont.c"
+#include "tests/CreatePen.c"
+#include "tests/CreateRectRgn.c"
+#include "tests/EngCreateSemaphore.c"
+#include "tests/EngAcquireSemaphore.c"
+#include "tests/EngDeleteSemaphore.c"
+#include "tests/EngReleaseSemaphore.c"
+#include "tests/ExtCreatePen.c"
+#include "tests/GdiConvertBitmap.c"
+#include "tests/GdiConvertBrush.c"
+#include "tests/GdiConvertDC.c"
+#include "tests/GdiConvertFont.c"
+#include "tests/GdiConvertPalette.c"
+#include "tests/GdiConvertRegion.c"
+#include "tests/GdiDeleteLocalDC.c"
+#include "tests/GdiGetLocalBrush.c"
+#include "tests/GdiGetLocalDC.c"
+#include "tests/GdiReleaseLocalDC.c"
+#include "tests/GdiSetAttrs.c"
+#include "tests/GetClipRgn.c"
+#include "tests/GetCurrentObject.c"
+#include "tests/GetDIBits.c"
+#include "tests/GetObject.c"
+#include "tests/GetStockObject.c"
+#include "tests/SelectObject.c"
+#include "tests/SetDCPenColor.c"
+#include "tests/SetSysColors.c"
+#include "tests/SetWorldTransform.c"
+
+
+
+
+
+
+
+
+
+
+/* The List of tests */
+TESTENTRY TestList[] =
+{
+ { L"AddFontResourceA", Test_AddFontResourceA },
+ { L"AddFontResourceEx", Test_AddFontResourceEx },
+ { L"CreateBitmapIndirect", Test_CreateBitmapIndirect },
+ { L"CreateCompatibleDC", Test_CreateCompatibleDC },
+ { L"CreateFont", Test_CreateFont },
+ { L"CreatePen", Test_CreatePen },
+ { L"EngCreateSemaphore", Test_EngCreateSemaphore },
+ { L"EngAcquireSemaphore", Test_EngAcquireSemaphore },
+ { L"EngDeleteSemaphore", Test_EngDeleteSemaphore },
+ { L"EngReleaseSemaphore", Test_EngReleaseSemaphore },
+ { L"CreateRectRgn", Test_CreateRectRgn },
+ { L"ExtCreatePen", Test_ExtCreatePen },
+ { L"GdiConvertBitmap", Test_GdiConvertBitmap },
+ { L"GdiConvertBrush", Test_GdiConvertBrush },
+ { L"GdiConvertBrush", Test_GdiConvertDC },
+ { L"GdiConvertFont", Test_GdiConvertFont },
+ { L"GdiConvertPalette", Test_GdiConvertPalette },
+ { L"GdiConvertRegion", Test_GdiConvertRegion },
+ { L"GdiDeleteLocalDC", Test_GdiDeleteLocalDC },
+ { L"GdiGetLocalBrush", Test_GdiGetLocalBrush },
+ { L"GdiGetLocalDC", Test_GdiGetLocalDC },
+ { L"GdiReleaseLocalDC", Test_GdiReleaseLocalDC },
+ { L"GdiSetAttrs", Test_GdiSetAttrs },
+ { L"GetClipRgn", Test_GetClipRgn },
+ { L"GetCurrentObject", Test_GetCurrentObject },
+ { L"GetDIBits", Test_GetDIBits },
+ { L"GetObject", Test_GetObject },
+ { L"GetStockObject", Test_GetStockObject },
+ { L"SelectObject", Test_SelectObject },
+ { L"SetDCPenColor", Test_SetDCPenColor },
+ { L"SetSysColors", Test_SetSysColors },
+ { L"SetWorldTransform", Test_SetWorldTransform },
+};
+
+/* The function that gives us the number of tests */
+INT NumTests(void)
+{
+ return sizeof(TestList) / sizeof(TESTENTRY);
+}
+
+#endif /* _GDITESTLIST_H */
+
+/* EOF */
diff --git a/rostests/apitests/gdi32api/tests/AddFontResourceEx.c b/rostests/apitests/gdi32api/tests/AddFontResourceEx.c
index b765e505d92..b7cae9f5217 100644
--- a/rostests/apitests/gdi32api/tests/AddFontResourceEx.c
+++ b/rostests/apitests/gdi32api/tests/AddFontResourceEx.c
@@ -1,36 +1,36 @@
-#define STAMP_DESIGNVECTOR (0x8000000 + 'd' + ('v' << 8))
-
-INT
-Test_AddFontResourceEx(PTESTINFO pti)
-{
- WCHAR szFileName[MAX_PATH];
-
- /* Test NULL filename */
- SetLastError(ERROR_SUCCESS);
- /* Windows crashes, would need SEH here */
-// TEST(AddFontResourceExW(NULL, 0, 0) != 0);
-// TEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test "" filename */
- SetLastError(ERROR_SUCCESS);
- TEST(AddFontResourceExW(L"", 0, 0) == 0);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- GetEnvironmentVariableW(L"systemroot", szFileName, MAX_PATH);
- wcscat(szFileName, L"\\Fonts\\cour.ttf");
-
- /* Test flags = 0 */
- SetLastError(ERROR_SUCCESS);
- TEST(AddFontResourceExW(szFileName, 0, 0) != 0);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- TEST(AddFontResourceExW(szFileName, 256, 0) == 0);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test invalid pointer as last parameter */
- TEST(AddFontResourceExW(szFileName, 0, (void*)-1) != 0);
-
-
- return APISTATUS_NORMAL;
-}
+#define STAMP_DESIGNVECTOR (0x8000000 + 'd' + ('v' << 8))
+
+INT
+Test_AddFontResourceEx(PTESTINFO pti)
+{
+ WCHAR szFileName[MAX_PATH];
+
+ /* Test NULL filename */
+ SetLastError(ERROR_SUCCESS);
+ /* Windows crashes, would need SEH here */
+// TEST(AddFontResourceExW(NULL, 0, 0) != 0);
+// TEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test "" filename */
+ SetLastError(ERROR_SUCCESS);
+ TEST(AddFontResourceExW(L"", 0, 0) == 0);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ GetEnvironmentVariableW(L"systemroot", szFileName, MAX_PATH);
+ wcscat(szFileName, L"\\Fonts\\cour.ttf");
+
+ /* Test flags = 0 */
+ SetLastError(ERROR_SUCCESS);
+ TEST(AddFontResourceExW(szFileName, 0, 0) != 0);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(AddFontResourceExW(szFileName, 256, 0) == 0);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test invalid pointer as last parameter */
+ TEST(AddFontResourceExW(szFileName, 0, (void*)-1) != 0);
+
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/CreateCompatibleDC.c b/rostests/apitests/gdi32api/tests/CreateCompatibleDC.c
index 17337bd9da3..c6529e2dfec 100644
--- a/rostests/apitests/gdi32api/tests/CreateCompatibleDC.c
+++ b/rostests/apitests/gdi32api/tests/CreateCompatibleDC.c
@@ -1,47 +1,47 @@
-INT
-Test_CreateCompatibleDC(PTESTINFO pti)
-{
- HDC hDCScreen, hOldDC, hDC, hDC2;
-
- /* Get screen DC */
- hDCScreen = GetDC(NULL);
- ASSERT(hDCScreen != NULL);
-
- /* Test NULL DC handle */
- SetLastError(ERROR_SUCCESS);
- hDC = CreateCompatibleDC(NULL);
- TEST(hDC != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- if(hDC) DeleteDC(hDC);
-
- /* Test invalid DC handle */
- SetLastError(ERROR_SUCCESS);
- hDC = CreateCompatibleDC((HDC)0x123456);
- TEST(hDC == NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- if(hDC) DeleteDC(hDC);
-
- hDC = CreateCompatibleDC(hDCScreen);
- RTEST(hDC != NULL);
-
- // Test if first selected pen is BLACK_PEN (? or same as screen DC's pen?)
- TEST(SelectObject(hDC, GetStockObject(DC_PEN)) == GetStockObject(BLACK_PEN));
- TEST(SelectObject(hDC, GetStockObject(BLACK_PEN)) == GetStockObject(DC_PEN));
-
- // Test for the starting Color == RGB(0,0,0)
- TEST(SetDCPenColor(hDC, RGB(1,2,3)) == RGB(0,0,0));
-
- // Check for reuse counter
- hOldDC = hDC;
- DeleteDC(hDC);
- hDC = CreateCompatibleDC(hDCScreen);
- hDC2 = CreateCompatibleDC(hOldDC);
- RTEST(hDC2 == NULL);
- if (hDC2 != NULL) DeleteDC(hDC2);
-
- // cleanup
- DeleteDC(hDC);
-
- ReleaseDC(NULL, hDCScreen);
- return APISTATUS_NORMAL;
-}
+INT
+Test_CreateCompatibleDC(PTESTINFO pti)
+{
+ HDC hDCScreen, hOldDC, hDC, hDC2;
+
+ /* Get screen DC */
+ hDCScreen = GetDC(NULL);
+ ASSERT(hDCScreen != NULL);
+
+ /* Test NULL DC handle */
+ SetLastError(ERROR_SUCCESS);
+ hDC = CreateCompatibleDC(NULL);
+ TEST(hDC != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ if(hDC) DeleteDC(hDC);
+
+ /* Test invalid DC handle */
+ SetLastError(ERROR_SUCCESS);
+ hDC = CreateCompatibleDC((HDC)0x123456);
+ TEST(hDC == NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ if(hDC) DeleteDC(hDC);
+
+ hDC = CreateCompatibleDC(hDCScreen);
+ RTEST(hDC != NULL);
+
+ // Test if first selected pen is BLACK_PEN (? or same as screen DC's pen?)
+ TEST(SelectObject(hDC, GetStockObject(DC_PEN)) == GetStockObject(BLACK_PEN));
+ TEST(SelectObject(hDC, GetStockObject(BLACK_PEN)) == GetStockObject(DC_PEN));
+
+ // Test for the starting Color == RGB(0,0,0)
+ TEST(SetDCPenColor(hDC, RGB(1,2,3)) == RGB(0,0,0));
+
+ // Check for reuse counter
+ hOldDC = hDC;
+ DeleteDC(hDC);
+ hDC = CreateCompatibleDC(hDCScreen);
+ hDC2 = CreateCompatibleDC(hOldDC);
+ RTEST(hDC2 == NULL);
+ if (hDC2 != NULL) DeleteDC(hDC2);
+
+ // cleanup
+ DeleteDC(hDC);
+
+ ReleaseDC(NULL, hDCScreen);
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/CreateFont.c b/rostests/apitests/gdi32api/tests/CreateFont.c
index e14ba716b39..cb70720b9bd 100644
--- a/rostests/apitests/gdi32api/tests/CreateFont.c
+++ b/rostests/apitests/gdi32api/tests/CreateFont.c
@@ -1,22 +1,22 @@
-#define INVALIDFONT "ThisFontDoesNotExist"
-
-INT
-Test_CreateFont(PTESTINFO pti)
-{
- HFONT hFont;
- LOGFONTA logfonta;
-
- /* Test invalid font name */
- hFont = CreateFontA(15, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
- DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
- DEFAULT_QUALITY, DEFAULT_PITCH, INVALIDFONT);
- RTEST(hFont);
- RTEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA));
- RTEST(memcmp(logfonta.lfFaceName, INVALIDFONT, strlen(INVALIDFONT)) == 0);
- RTEST(logfonta.lfWeight == FW_DONTCARE);
-
-
- return APISTATUS_NORMAL;
-}
-
-
+#define INVALIDFONT "ThisFontDoesNotExist"
+
+INT
+Test_CreateFont(PTESTINFO pti)
+{
+ HFONT hFont;
+ LOGFONTA logfonta;
+
+ /* Test invalid font name */
+ hFont = CreateFontA(15, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
+ DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
+ DEFAULT_QUALITY, DEFAULT_PITCH, INVALIDFONT);
+ RTEST(hFont);
+ RTEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA));
+ RTEST(memcmp(logfonta.lfFaceName, INVALIDFONT, strlen(INVALIDFONT)) == 0);
+ RTEST(logfonta.lfWeight == FW_DONTCARE);
+
+
+ return APISTATUS_NORMAL;
+}
+
+
diff --git a/rostests/apitests/gdi32api/tests/CreatePen.c b/rostests/apitests/gdi32api/tests/CreatePen.c
index 20bffa6a4b8..bb1cc4476fa 100644
--- a/rostests/apitests/gdi32api/tests/CreatePen.c
+++ b/rostests/apitests/gdi32api/tests/CreatePen.c
@@ -1,56 +1,56 @@
-INT
-Test_CreatePen(PTESTINFO pti)
-{
- HPEN hPen;
- LOGPEN logpen;
-
- SetLastError(ERROR_SUCCESS);
- hPen = CreatePen(PS_DASHDOT, 5, RGB(1,2,3));
- RTEST(hPen);
-
- /* Test if we have a PEN */
- RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_PEN);
-
- GetObject(hPen, sizeof(logpen), &logpen);
- RTEST(logpen.lopnStyle == PS_DASHDOT);
- RTEST(logpen.lopnWidth.x == 5);
- RTEST(logpen.lopnColor == RGB(1,2,3));
- DeleteObject(hPen);
-
- /* PS_GEOMETRIC | PS_DASHDOT = 0x00001011 will become PS_SOLID */
- logpen.lopnStyle = 22;
- hPen = CreatePen(PS_GEOMETRIC | PS_DASHDOT, 5, RGB(1,2,3));
- RTEST(hPen);
- GetObject(hPen, sizeof(logpen), &logpen);
- RTEST(logpen.lopnStyle == PS_SOLID);
- DeleteObject(hPen);
-
- /* PS_USERSTYLE will become PS_SOLID */
- logpen.lopnStyle = 22;
- hPen = CreatePen(PS_USERSTYLE, 5, RGB(1,2,3));
- RTEST(hPen);
- GetObject(hPen, sizeof(logpen), &logpen);
- RTEST(logpen.lopnStyle == PS_SOLID);
- DeleteObject(hPen);
-
- /* PS_ALTERNATE will become PS_SOLID */
- logpen.lopnStyle = 22;
- hPen = CreatePen(PS_ALTERNATE, 5, RGB(1,2,3));
- RTEST(hPen);
- GetObject(hPen, sizeof(logpen), &logpen);
- RTEST(logpen.lopnStyle == PS_SOLID);
- DeleteObject(hPen);
-
- /* PS_INSIDEFRAME is ok */
- logpen.lopnStyle = 22;
- hPen = CreatePen(PS_INSIDEFRAME, 5, RGB(1,2,3));
- RTEST(hPen);
- GetObject(hPen, sizeof(logpen), &logpen);
- RTEST(logpen.lopnStyle == PS_INSIDEFRAME);
- DeleteObject(hPen);
-
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- return APISTATUS_NORMAL;
-}
-
+INT
+Test_CreatePen(PTESTINFO pti)
+{
+ HPEN hPen;
+ LOGPEN logpen;
+
+ SetLastError(ERROR_SUCCESS);
+ hPen = CreatePen(PS_DASHDOT, 5, RGB(1,2,3));
+ RTEST(hPen);
+
+ /* Test if we have a PEN */
+ RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_PEN);
+
+ GetObject(hPen, sizeof(logpen), &logpen);
+ RTEST(logpen.lopnStyle == PS_DASHDOT);
+ RTEST(logpen.lopnWidth.x == 5);
+ RTEST(logpen.lopnColor == RGB(1,2,3));
+ DeleteObject(hPen);
+
+ /* PS_GEOMETRIC | PS_DASHDOT = 0x00001011 will become PS_SOLID */
+ logpen.lopnStyle = 22;
+ hPen = CreatePen(PS_GEOMETRIC | PS_DASHDOT, 5, RGB(1,2,3));
+ RTEST(hPen);
+ GetObject(hPen, sizeof(logpen), &logpen);
+ RTEST(logpen.lopnStyle == PS_SOLID);
+ DeleteObject(hPen);
+
+ /* PS_USERSTYLE will become PS_SOLID */
+ logpen.lopnStyle = 22;
+ hPen = CreatePen(PS_USERSTYLE, 5, RGB(1,2,3));
+ RTEST(hPen);
+ GetObject(hPen, sizeof(logpen), &logpen);
+ RTEST(logpen.lopnStyle == PS_SOLID);
+ DeleteObject(hPen);
+
+ /* PS_ALTERNATE will become PS_SOLID */
+ logpen.lopnStyle = 22;
+ hPen = CreatePen(PS_ALTERNATE, 5, RGB(1,2,3));
+ RTEST(hPen);
+ GetObject(hPen, sizeof(logpen), &logpen);
+ RTEST(logpen.lopnStyle == PS_SOLID);
+ DeleteObject(hPen);
+
+ /* PS_INSIDEFRAME is ok */
+ logpen.lopnStyle = 22;
+ hPen = CreatePen(PS_INSIDEFRAME, 5, RGB(1,2,3));
+ RTEST(hPen);
+ GetObject(hPen, sizeof(logpen), &logpen);
+ RTEST(logpen.lopnStyle == PS_INSIDEFRAME);
+ DeleteObject(hPen);
+
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/gdi32api/tests/CreateRectRgn.c b/rostests/apitests/gdi32api/tests/CreateRectRgn.c
index 58941b4f125..879ac0204bc 100644
--- a/rostests/apitests/gdi32api/tests/CreateRectRgn.c
+++ b/rostests/apitests/gdi32api/tests/CreateRectRgn.c
@@ -1,8 +1,8 @@
-INT
-Test_CreateRectRgn(PTESTINFO pti)
-{
-// HRGN hRgn;
-
-// hRgn = CreateRectRgn(
- return APISTATUS_NORMAL;
-}
+INT
+Test_CreateRectRgn(PTESTINFO pti)
+{
+// HRGN hRgn;
+
+// hRgn = CreateRectRgn(
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/ExtCreatePen.c b/rostests/apitests/gdi32api/tests/ExtCreatePen.c
index d2488e1c2d5..1507e95401d 100644
--- a/rostests/apitests/gdi32api/tests/ExtCreatePen.c
+++ b/rostests/apitests/gdi32api/tests/ExtCreatePen.c
@@ -1,29 +1,29 @@
-INT
-Test_ExtCreatePen(PTESTINFO pti)
-{
- HPEN hPen;
- LOGBRUSH logbrush;
- DWORD dwStyles[17] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
-
- logbrush.lbStyle = BS_SOLID;
- logbrush.lbColor = RGB(1,2,3);
- logbrush.lbHatch = 0;
- hPen = ExtCreatePen(PS_COSMETIC, 1,&logbrush, 0, 0);
- if (!hPen) return FALSE;
-
- /* Test if we have an EXTPEN */
- RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN);
- DeleteObject(hPen);
-
- /* test userstyles */
- hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 17, (CONST DWORD*)&dwStyles);
- RTEST(hPen == 0);
- hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 16, (CONST DWORD*)&dwStyles);
- RTEST(hPen != 0);
-
- DeleteObject(hPen);
-
- return APISTATUS_NORMAL;
-}
-
-
+INT
+Test_ExtCreatePen(PTESTINFO pti)
+{
+ HPEN hPen;
+ LOGBRUSH logbrush;
+ DWORD dwStyles[17] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
+
+ logbrush.lbStyle = BS_SOLID;
+ logbrush.lbColor = RGB(1,2,3);
+ logbrush.lbHatch = 0;
+ hPen = ExtCreatePen(PS_COSMETIC, 1,&logbrush, 0, 0);
+ if (!hPen) return FALSE;
+
+ /* Test if we have an EXTPEN */
+ RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN);
+ DeleteObject(hPen);
+
+ /* test userstyles */
+ hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 17, (CONST DWORD*)&dwStyles);
+ RTEST(hPen == 0);
+ hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 16, (CONST DWORD*)&dwStyles);
+ RTEST(hPen != 0);
+
+ DeleteObject(hPen);
+
+ return APISTATUS_NORMAL;
+}
+
+
diff --git a/rostests/apitests/gdi32api/tests/GetClipRgn.c b/rostests/apitests/gdi32api/tests/GetClipRgn.c
index fee7b051d85..4cb9674305e 100644
--- a/rostests/apitests/gdi32api/tests/GetClipRgn.c
+++ b/rostests/apitests/gdi32api/tests/GetClipRgn.c
@@ -1,31 +1,31 @@
-INT
-Test_GetClipRgn(PTESTINFO pti)
-{
- 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);
-
- /* Test invalid DC */
- SetLastError(ERROR_SUCCESS);
- TEST(GetClipRgn((HDC)0x12345, hrgn) == -1);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test invalid hrgn */
- SetLastError(ERROR_SUCCESS);
- TEST(GetClipRgn(hDC, (HRGN)0x12345) == 0);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- ReleaseDC(hWnd, hDC);
- DestroyWindow(hWnd);
-
- return APISTATUS_NORMAL;
-}
-
+INT
+Test_GetClipRgn(PTESTINFO pti)
+{
+ 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);
+
+ /* Test invalid DC */
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetClipRgn((HDC)0x12345, hrgn) == -1);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test invalid hrgn */
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetClipRgn(hDC, (HRGN)0x12345) == 0);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ ReleaseDC(hWnd, hDC);
+ DestroyWindow(hWnd);
+
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/gdi32api/tests/GetDIBits.c b/rostests/apitests/gdi32api/tests/GetDIBits.c
index b778e5aedb6..3ed96bc233a 100644
--- a/rostests/apitests/gdi32api/tests/GetDIBits.c
+++ b/rostests/apitests/gdi32api/tests/GetDIBits.c
@@ -1,89 +1,89 @@
-INT
-Test_GetDIBits(PTESTINFO pti)
-{
- HDC hDCScreen;
- HBITMAP hBitmap;
- BITMAPINFO bi;
- INT ScreenBpp;
-
- hDCScreen = GetDC(NULL);
- if (hDCScreen == NULL)
- {
- return FALSE;
- }
-
- hBitmap = CreateCompatibleBitmap(hDCScreen, 16, 16);
- RTEST(hBitmap != NULL);
-
- /* misc */
- SetLastError(ERROR_SUCCESS);
- RTEST(GetDIBits(0, 0, 0, 0, NULL, NULL, 0) == 0);
- RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(GetDIBits((HDC)2345, 0, 0, 0, NULL, NULL, 0) == 0);
- RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(GetDIBits((HDC)2345, hBitmap, 0, 0, NULL, NULL, 0) == 0);
- RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(GetDIBits((HDC)2345, hBitmap, 0, 15, NULL, &bi, 0) == 0);
- RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
-
-
- /* null hdc */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bi, sizeof(BITMAPINFO));
- bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- RTEST(GetDIBits(NULL, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);
- RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* null bitmap */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bi, sizeof(BITMAPINFO));
- bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* 0 scan lines */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bi, sizeof(BITMAPINFO));
- bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- RTEST(GetDIBits(hDCScreen, hBitmap, 0, 0, NULL, &bi, DIB_RGB_COLORS) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* null bitmap info - crashes XP*/
- //SetLastError(ERROR_SUCCESS);
- //RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, NULL, DIB_RGB_COLORS) == 0);
- //RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* bad bmi colours (uUsage) */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bi, sizeof(BITMAPINFO));
- bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, 100) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
- RTEST(bi.bmiHeader.biWidth == 0);
- RTEST(bi.bmiHeader.biHeight == 0);
- RTEST(bi.bmiHeader.biBitCount == 0);
- RTEST(bi.bmiHeader.biSizeImage == 0);
-
- /* basic call */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bi, sizeof(BITMAPINFO));
- bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
- ScreenBpp = GetDeviceCaps(hDCScreen, BITSPIXEL);
- RTEST(bi.bmiHeader.biWidth == 16);
- RTEST(bi.bmiHeader.biHeight == 16);
- RTEST(bi.bmiHeader.biBitCount == ScreenBpp);
- RTEST(bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
-
- DeleteObject(hBitmap);
- ReleaseDC(NULL, hDCScreen);
- return APISTATUS_NORMAL;
-}
+INT
+Test_GetDIBits(PTESTINFO pti)
+{
+ HDC hDCScreen;
+ HBITMAP hBitmap;
+ BITMAPINFO bi;
+ INT ScreenBpp;
+
+ hDCScreen = GetDC(NULL);
+ if (hDCScreen == NULL)
+ {
+ return FALSE;
+ }
+
+ hBitmap = CreateCompatibleBitmap(hDCScreen, 16, 16);
+ RTEST(hBitmap != NULL);
+
+ /* misc */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetDIBits(0, 0, 0, 0, NULL, NULL, 0) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetDIBits((HDC)2345, 0, 0, 0, NULL, NULL, 0) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetDIBits((HDC)2345, hBitmap, 0, 0, NULL, NULL, 0) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetDIBits((HDC)2345, hBitmap, 0, 15, NULL, &bi, 0) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+
+
+ /* null hdc */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bi, sizeof(BITMAPINFO));
+ bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RTEST(GetDIBits(NULL, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* null bitmap */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bi, sizeof(BITMAPINFO));
+ bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, &bi, DIB_RGB_COLORS) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* 0 scan lines */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bi, sizeof(BITMAPINFO));
+ bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RTEST(GetDIBits(hDCScreen, hBitmap, 0, 0, NULL, &bi, DIB_RGB_COLORS) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* null bitmap info - crashes XP*/
+ //SetLastError(ERROR_SUCCESS);
+ //RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, NULL, DIB_RGB_COLORS) == 0);
+ //RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* bad bmi colours (uUsage) */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bi, sizeof(BITMAPINFO));
+ bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, 100) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ RTEST(bi.bmiHeader.biWidth == 0);
+ RTEST(bi.bmiHeader.biHeight == 0);
+ RTEST(bi.bmiHeader.biBitCount == 0);
+ RTEST(bi.bmiHeader.biSizeImage == 0);
+
+ /* basic call */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bi, sizeof(BITMAPINFO));
+ bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RTEST(GetDIBits(hDCScreen, hBitmap, 0, 15, NULL, &bi, DIB_RGB_COLORS) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ ScreenBpp = GetDeviceCaps(hDCScreen, BITSPIXEL);
+ RTEST(bi.bmiHeader.biWidth == 16);
+ RTEST(bi.bmiHeader.biHeight == 16);
+ RTEST(bi.bmiHeader.biBitCount == ScreenBpp);
+ RTEST(bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
+
+ DeleteObject(hBitmap);
+ ReleaseDC(NULL, hDCScreen);
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/GetObject.c b/rostests/apitests/gdi32api/tests/GetObject.c
index bcfedcf4bc5..1ba23e808b5 100644
--- a/rostests/apitests/gdi32api/tests/GetObject.c
+++ b/rostests/apitests/gdi32api/tests/GetObject.c
@@ -1,444 +1,444 @@
-static INT
-Test_General(PTESTINFO pti)
-{
- struct
- {
- LOGBRUSH logbrush;
- BYTE additional[5];
- } TestStruct;
- PLOGBRUSH plogbrush;
- HBRUSH hBrush;
-
- /* Test null pointer and invalid handles */
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA(0, 0, NULL) == 0);
- TEST(GetObjectA((HANDLE)-1, 0, NULL) == 0);
- TEST(GetObjectA((HANDLE)0x00380000, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_DC, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_DC, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_REGION, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_REGION, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EMF, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EMF, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METAFILE, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_METAFILE, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_ENHMETAFILE, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_ENHMETAFILE, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- /* Test need of alignment */
- hBrush = GetStockObject(WHITE_BRUSH);
- plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush);
- TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == sizeof(LOGBRUSH));
- plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush + 2);
- TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == sizeof(LOGBRUSH));
- plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush + 1);
- TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == 0);
-
- return TRUE;
-}
-
-static INT
-Test_Bitmap(PTESTINFO pti)
-{
- HBITMAP hBitmap;
- BITMAP bitmap;
- DIBSECTION dibsection;
- BYTE bData[100] = {0};
- BYTE Buffer[100] = {48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0};
-
- FillMemory(&bitmap, sizeof(BITMAP), 0x77);
- hBitmap = CreateBitmap(10,10,1,8,bData);
- if (!hBitmap) return FALSE;
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_BITMAP, 0, NULL) == sizeof(BITMAP));
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_BITMAP, 0, NULL) == sizeof(BITMAP));
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_BITMAP, sizeof(BITMAP), NULL) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, sizeof(DIBSECTION), NULL) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, 0, NULL) == sizeof(BITMAP));
- TEST(GetObjectA((HANDLE)((UINT)hBitmap & 0x0000ffff), 0, NULL) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, 5, NULL) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, -5, NULL) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, 0, Buffer) == 0);
- TEST(GetObjectA(hBitmap, 5, Buffer) == 0);
- TEST(GetObjectA(hBitmap, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, sizeof(BITMAP)+2, &bitmap) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, sizeof(DIBSECTION), &dibsection) == sizeof(BITMAP));
- TEST(GetObjectA(hBitmap, -5, &bitmap) == sizeof(BITMAP));
- TEST(GetLastError() == ERROR_SUCCESS);
-
- // todo: test invalid handle + buffer
-
- DeleteObject(hBitmap);
- return TRUE;
-}
-
-static INT
-Test_Dibsection(PTESTINFO pti)
-{
- BITMAPINFO bmi = {{sizeof(BITMAPINFOHEADER), 10, 10, 1, 8, BI_RGB, 0, 10, 10, 0,0}};
- HBITMAP hBitmap;
- DIBSECTION dibsection;
- PVOID pData;
-
- FillMemory(&dibsection, sizeof(DIBSECTION), 0x77);
- HDC hDC = GetDC(0);
- hBitmap = CreateDIBSection(hDC, &bmi, DIB_RGB_COLORS, &pData, NULL, 0);
- if(!hBitmap) return FALSE;
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObject(hBitmap, sizeof(DIBSECTION), NULL) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, 0, NULL) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, 5, NULL) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, -5, NULL) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, 0, &dibsection) == 0);
- TEST(GetObject(hBitmap, 5, &dibsection) == 0);
- TEST(GetObject(hBitmap, sizeof(BITMAP), &dibsection) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, sizeof(BITMAP)+2, &dibsection) == sizeof(BITMAP));
- TEST(GetObject(hBitmap, sizeof(DIBSECTION), &dibsection) == sizeof(DIBSECTION));
- TEST(GetObject(hBitmap, sizeof(DIBSECTION)+2, &dibsection) == sizeof(DIBSECTION));
- TEST(GetObject(hBitmap, -5, &dibsection) == sizeof(DIBSECTION));
- TEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hBitmap);
- ReleaseDC(0, hDC);
-
- return TRUE;
-}
-
-static INT
-Test_Palette(PTESTINFO pti)
-{
- LOGPALETTE logpal;
- HPALETTE hPalette;
- WORD wPalette;
-
- FillMemory(&wPalette, sizeof(WORD), 0x77);
- logpal.palVersion = 0x0300;
- logpal.palNumEntries = 1;
- logpal.palPalEntry[0].peRed = 0;
- logpal.palPalEntry[0].peGreen = 0;
- logpal.palPalEntry[0].peBlue = 0;
- logpal.palPalEntry[0].peFlags = PC_EXPLICIT;
- hPalette = CreatePalette(&logpal);
- if (!hPalette) return FALSE;
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PALETTE, 0, NULL) == sizeof(WORD));
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PALETTE, 0, NULL) == sizeof(WORD));
- TEST(GetObject(hPalette, sizeof(WORD), NULL) == sizeof(WORD));
- TEST(GetObject(hPalette, 0, NULL) == sizeof(WORD));
- TEST(GetObject(hPalette, 5, NULL) == sizeof(WORD));
- TEST(GetObject(hPalette, -5, NULL) == sizeof(WORD));
- TEST(GetObject(hPalette, sizeof(WORD), &wPalette) == sizeof(WORD));
- TEST(GetObject(hPalette, sizeof(WORD)+2, &wPalette) == sizeof(WORD));
- TEST(GetObject(hPalette, 0, &wPalette) == 0);
- TEST(GetObject(hPalette, 1, &wPalette) == 0);
- TEST(GetObject(hPalette, -1, &wPalette) == sizeof(WORD));
- TEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hPalette);
- return TRUE;
-}
-
-static INT
-Test_Brush(PTESTINFO pti)
-{
- LOGBRUSH logbrush;
- HBRUSH hBrush;
-
- FillMemory(&logbrush, sizeof(LOGBRUSH), 0x77);
- hBrush = CreateSolidBrush(RGB(1,2,3));
- if (!hBrush) return FALSE;
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((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, 0, NULL) == sizeof(LOGBRUSH));
- RTEST(GetObject(hBrush, 5, NULL) == sizeof(LOGBRUSH));
- RTEST(GetObject(hBrush, -5, NULL) == sizeof(LOGBRUSH));
-
- RTEST(GetObject(hBrush, 0, &logbrush) == 0);
- RTEST(logbrush.lbStyle == 0x77777777);
- RTEST(GetObject(hBrush, 5, &logbrush) == sizeof(LOGBRUSH));
- RTEST(logbrush.lbStyle == 0);
- RTEST(logbrush.lbColor == 0x77777701);
-
- RTEST(GetObject(hBrush, sizeof(LOGBRUSH), &logbrush) == sizeof(LOGBRUSH));
- RTEST(GetObject(hBrush, sizeof(LOGBRUSH)+2, &logbrush) == sizeof(LOGBRUSH));
- RTEST(GetObject(hBrush, -1, &logbrush) == sizeof(LOGBRUSH));
- // TODO: test all members
-
- RTEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hBrush);
- return TRUE;
-}
-
-static INT
-Test_Pen(PTESTINFO pti)
-{
- LOGPEN logpen;
- HPEN hPen;
-
- FillMemory(&logpen, sizeof(LOGPEN), 0x77);
- hPen = CreatePen(PS_SOLID, 3, RGB(4,5,6));
- if (!hPen) return FALSE;
- SetLastError(ERROR_SUCCESS);
- RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
- RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, sizeof(BITMAP), NULL) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, 0, NULL) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, 5, NULL) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, -5, NULL) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, sizeof(LOGPEN), &logpen) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, sizeof(LOGPEN)-1, &logpen) == 0);
- RTEST(GetObject(hPen, sizeof(LOGPEN)+2, &logpen) == sizeof(LOGPEN));
- RTEST(GetObject(hPen, 0, &logpen) == 0);
- RTEST(GetObject(hPen, -5, &logpen) == sizeof(LOGPEN));
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* test if the fields are filled correctly */
- RTEST(logpen.lopnStyle == PS_SOLID);
-
-
- DeleteObject(hPen);
- return TRUE;
-}
-
-static INT
-Test_ExtPen(PTESTINFO pti)
-{
- HPEN hPen;
- EXTLOGPEN extlogpen;
- LOGBRUSH logbrush;
- DWORD dwStyles[17] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
- struct
- {
- EXTLOGPEN extlogpen;
- DWORD dwStyles[50];
- } elpUserStyle;
-
- SetLastError(ERROR_SUCCESS);
- RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
- RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- FillMemory(&extlogpen, sizeof(EXTLOGPEN), 0x77);
- logbrush.lbStyle = BS_SOLID;
- logbrush.lbColor = RGB(1,2,3);
- logbrush.lbHatch = 22;
- hPen = ExtCreatePen(PS_GEOMETRIC | PS_DASH, 5, &logbrush, 0, NULL);
-
- RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN);
- RTEST(GetObject((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN), NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
- RTEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
- RTEST(GetObject((HANDLE)GDI_HANDLE_GET_INDEX(hPen), 0, 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, 4, &extlogpen) == 0);
-
- /* Nothing should be filled */
- RTEST(extlogpen.elpPenStyle == 0x77777777);
- RTEST(extlogpen.elpWidth == 0x77777777);
-
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN), &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN)-sizeof(DWORD), &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN)-sizeof(DWORD)-1, &extlogpen) == 0);
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN)+2, &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
- RTEST(GetObject(hPen, -5, &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
-
- /* test if the fields are filled correctly */
- RTEST(extlogpen.elpPenStyle == (PS_GEOMETRIC | PS_DASH));
- RTEST(extlogpen.elpWidth == 5);
- RTEST(extlogpen.elpBrushStyle == 0);
- RTEST(extlogpen.elpColor == RGB(1,2,3));
- RTEST(extlogpen.elpHatch == 22);
- RTEST(extlogpen.elpNumEntries == 0);
- DeleteObject(hPen);
-
- /* A maximum of 16 Styles is allowed */
- hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 16, (CONST DWORD*)&dwStyles);
- RTEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN) + 15*sizeof(DWORD));
- RTEST(GetObject(hPen, sizeof(EXTLOGPEN) + 15*sizeof(DWORD), &elpUserStyle) == sizeof(EXTLOGPEN) + 15*sizeof(DWORD));
- RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[0] == 0);
- RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[1] == 1);
- RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[15] == 15);
- DeleteObject(hPen);
-
- return TRUE;
-}
-
-static INT
-Test_Font(PTESTINFO pti)
-{
- HFONT hFont;
- LOGFONTA logfonta;
- LOGFONTW logfontw;
- EXTLOGFONTA extlogfonta;
- EXTLOGFONTW extlogfontw;
- ENUMLOGFONTEXA enumlogfontexa;
- ENUMLOGFONTEXW enumlogfontexw;
- ENUMLOGFONTEXDVA enumlogfontexdva;
- ENUMLOGFONTEXDVW enumlogfontexdvw;
- ENUMLOGFONTA enumlogfonta;
- ENUMLOGFONTW enumlogfontw;
- BYTE bData[270];
-
- FillMemory(&logfonta, sizeof(LOGFONTA), 0x77);
- hFont = CreateFontA(8, 8, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
- ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
- ANTIALIASED_QUALITY, DEFAULT_PITCH, "testfont");
- TEST(hFont);
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, 0, NULL) == sizeof(LOGFONTA));
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, 0, NULL) == sizeof(LOGFONTW));
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(LOGFONTA), NULL) == sizeof(LOGFONTA)); // 60
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTA), NULL) == sizeof(LOGFONTA)); // 156
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXA), NULL) == sizeof(LOGFONTA)); // 188
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(EXTLOGFONTA), NULL) == sizeof(LOGFONTA)); // 192
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVA), NULL) == sizeof(LOGFONTA)); // 260
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVA)+1, NULL) == sizeof(LOGFONTA)); // 260
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(LOGFONTW), NULL) == sizeof(LOGFONTW)); // 92
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTW), NULL) == sizeof(LOGFONTW)); // 284
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(EXTLOGFONTW), NULL) == sizeof(LOGFONTW)); // 320
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXW), NULL) == sizeof(LOGFONTW)); // 348
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVW), NULL) == sizeof(LOGFONTW)); // 420
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVW)+1, NULL) == sizeof(LOGFONTW)); // 356!
-
- TEST(GetObjectA(hFont, sizeof(LOGFONTA), NULL) == sizeof(LOGFONTA));
- TEST(GetObjectA(hFont, 0, NULL) == sizeof(LOGFONTA));
- TEST(GetObjectA(hFont, 5, NULL) == sizeof(LOGFONTA));
- TEST(GetObjectA(hFont, -5, NULL) == sizeof(LOGFONTA));
- TEST(GetObjectA(hFont, 0, &logfonta) == 0);
- TEST(logfonta.lfHeight == 0x77777777);
-
- TEST(GetObjectA(hFont, 5, &logfonta) == 5);
- TEST(logfonta.lfHeight == 8);
- TEST(logfonta.lfWidth == 0x77777708);
-
- TEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA)); // 60
- TEST(GetObjectA(hFont, sizeof(LOGFONTW), &logfontw) == sizeof(LOGFONTA)); // 92
- TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA), &extlogfonta) == sizeof(EXTLOGFONTA)); // 192
- TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA)+1, &extlogfonta) == sizeof(EXTLOGFONTA)+1); // 192
- TEST(GetObjectA(hFont, sizeof(EXTLOGFONTW), &extlogfontw) == sizeof(ENUMLOGFONTEXDVA)); // 320
-
- TEST(GetObjectA(hFont, 261, &bData) == 260); // no
-
- /* LOGFONT / GetObjectW */
- FillMemory(&logfontw, sizeof(LOGFONTW), 0x77);
-
- TEST(GetObjectW(hFont, sizeof(LOGFONTW), NULL) == sizeof(LOGFONTW));
- TEST(GetObjectW(hFont, 0, NULL) == sizeof(LOGFONTW));
- TEST(GetObjectW(hFont, 5, NULL) == sizeof(LOGFONTW));
- TEST(GetObjectW(hFont, -5, NULL) == sizeof(LOGFONTW));
- TEST(GetObjectW(hFont, 0, &logfontw) == 0);
- TEST(logfontw.lfHeight == 0x77777777);
-
- TEST(GetObjectW(hFont, 5, &logfontw) == 5);
- TEST(logfontw.lfHeight == 8);
- TEST(logfontw.lfWidth == 0x77777708);
-
- TEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA)); // 60
- TEST(logfonta.lfHeight == 8);
- TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTA), &enumlogfonta) == sizeof(ENUMLOGFONTA)); // 156
- TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXA), &enumlogfontexa) == sizeof(ENUMLOGFONTEXA)); // 188
- TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA), &extlogfonta) == sizeof(EXTLOGFONTA)); // 192
- TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXDVA), &enumlogfontexdva) == sizeof(ENUMLOGFONTEXDVA)); // 260
- TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXDVA)+1, &enumlogfontexdva) == sizeof(ENUMLOGFONTEXDVA)); // 260
-
- TEST(GetObjectW(hFont, sizeof(LOGFONTW), &logfontw) == sizeof(LOGFONTW)); // 92
- TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTW), &enumlogfontw) == sizeof(ENUMLOGFONTW)); // 284
- TEST(GetObjectW(hFont, sizeof(EXTLOGFONTW), &extlogfontw) == sizeof(EXTLOGFONTW)); // 320
- TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXW), &enumlogfontexw) == sizeof(ENUMLOGFONTEXW)); // 348
- TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXDVW), &enumlogfontexdvw) == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD)); // 420
- TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXDVW)+1, &enumlogfontexdvw) == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD)); // 356!
-
- TEST(GetObjectW(hFont, 356, &bData) == 356);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- DeleteObject(hFont);
-
- return TRUE;
-}
-
-static INT
-Test_Colorspace(PTESTINFO pti)
-{
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_COLORSPACE, 0, NULL) == 60);// FIXME: what structure?
- TEST(GetLastError() == ERROR_INSUFFICIENT_BUFFER);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_COLORSPACE, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INSUFFICIENT_BUFFER);
-
- return TRUE;
-}
-
-static INT
-Test_MetaDC(PTESTINFO pti)
-{
- /* Windows does not SetLastError() on a metadc, but it doesn't seem to do anything with it */
- HDC hMetaDC;
- BYTE buffer[100];
-
- hMetaDC = CreateMetaFile(NULL);
- if(!hMetaDC) return FALSE;
- if(((UINT)hMetaDC & GDI_HANDLE_TYPE_MASK) != GDI_OBJECT_TYPE_METADC) return FALSE;
-
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METADC, 0, NULL) == 0);
- TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METADC, 100, &buffer) == 0);
- TEST(GetObjectA(hMetaDC, 0, NULL) == 0);
- TEST(GetObjectA(hMetaDC, 100, &buffer) == 0);
- TEST(GetLastError() == ERROR_SUCCESS);
- return TRUE;
-}
-
-INT
-Test_GetObject(PTESTINFO pti)
-{
-
- HRGN hRgn;
- hRgn = CreateRectRgn(0,0,5,5);
- SetLastError(ERROR_SUCCESS);
- TEST(GetObjectW(hRgn, 0, NULL) == 0);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- DeleteObject(hRgn);
-
- Test_Font(pti);
- Test_Colorspace(pti);
- Test_General(pti);
- Test_Bitmap(pti);
- Test_Dibsection(pti);
- Test_Palette(pti);
- Test_Brush(pti);
- Test_Pen(pti);
- Test_ExtPen(pti); // not implemented yet in ROS
- Test_MetaDC(pti);
-
- return APISTATUS_NORMAL;
-}
+static INT
+Test_General(PTESTINFO pti)
+{
+ struct
+ {
+ LOGBRUSH logbrush;
+ BYTE additional[5];
+ } TestStruct;
+ PLOGBRUSH plogbrush;
+ HBRUSH hBrush;
+
+ /* Test null pointer and invalid handles */
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA(0, 0, NULL) == 0);
+ TEST(GetObjectA((HANDLE)-1, 0, NULL) == 0);
+ TEST(GetObjectA((HANDLE)0x00380000, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_DC, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_DC, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_REGION, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_REGION, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EMF, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EMF, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METAFILE, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_METAFILE, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_ENHMETAFILE, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_ENHMETAFILE, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ /* Test need of alignment */
+ hBrush = GetStockObject(WHITE_BRUSH);
+ plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush);
+ TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == sizeof(LOGBRUSH));
+ plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush + 2);
+ TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == sizeof(LOGBRUSH));
+ plogbrush = (PVOID)((ULONG_PTR)&TestStruct.logbrush + 1);
+ TEST(GetObject(hBrush, sizeof(LOGBRUSH), plogbrush) == 0);
+
+ return TRUE;
+}
+
+static INT
+Test_Bitmap(PTESTINFO pti)
+{
+ HBITMAP hBitmap;
+ BITMAP bitmap;
+ DIBSECTION dibsection;
+ BYTE bData[100] = {0};
+ BYTE Buffer[100] = {48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0};
+
+ FillMemory(&bitmap, sizeof(BITMAP), 0x77);
+ hBitmap = CreateBitmap(10,10,1,8,bData);
+ if (!hBitmap) return FALSE;
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_BITMAP, 0, NULL) == sizeof(BITMAP));
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_BITMAP, 0, NULL) == sizeof(BITMAP));
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_BITMAP, sizeof(BITMAP), NULL) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, sizeof(DIBSECTION), NULL) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, 0, NULL) == sizeof(BITMAP));
+ TEST(GetObjectA((HANDLE)((UINT)hBitmap & 0x0000ffff), 0, NULL) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, 5, NULL) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, -5, NULL) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, 0, Buffer) == 0);
+ TEST(GetObjectA(hBitmap, 5, Buffer) == 0);
+ TEST(GetObjectA(hBitmap, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, sizeof(BITMAP)+2, &bitmap) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, sizeof(DIBSECTION), &dibsection) == sizeof(BITMAP));
+ TEST(GetObjectA(hBitmap, -5, &bitmap) == sizeof(BITMAP));
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ // todo: test invalid handle + buffer
+
+ DeleteObject(hBitmap);
+ return TRUE;
+}
+
+static INT
+Test_Dibsection(PTESTINFO pti)
+{
+ BITMAPINFO bmi = {{sizeof(BITMAPINFOHEADER), 10, 10, 1, 8, BI_RGB, 0, 10, 10, 0,0}};
+ HBITMAP hBitmap;
+ DIBSECTION dibsection;
+ PVOID pData;
+
+ FillMemory(&dibsection, sizeof(DIBSECTION), 0x77);
+ HDC hDC = GetDC(0);
+ hBitmap = CreateDIBSection(hDC, &bmi, DIB_RGB_COLORS, &pData, NULL, 0);
+ if(!hBitmap) return FALSE;
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObject(hBitmap, sizeof(DIBSECTION), NULL) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, 0, NULL) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, 5, NULL) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, -5, NULL) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, 0, &dibsection) == 0);
+ TEST(GetObject(hBitmap, 5, &dibsection) == 0);
+ TEST(GetObject(hBitmap, sizeof(BITMAP), &dibsection) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, sizeof(BITMAP)+2, &dibsection) == sizeof(BITMAP));
+ TEST(GetObject(hBitmap, sizeof(DIBSECTION), &dibsection) == sizeof(DIBSECTION));
+ TEST(GetObject(hBitmap, sizeof(DIBSECTION)+2, &dibsection) == sizeof(DIBSECTION));
+ TEST(GetObject(hBitmap, -5, &dibsection) == sizeof(DIBSECTION));
+ TEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hBitmap);
+ ReleaseDC(0, hDC);
+
+ return TRUE;
+}
+
+static INT
+Test_Palette(PTESTINFO pti)
+{
+ LOGPALETTE logpal;
+ HPALETTE hPalette;
+ WORD wPalette;
+
+ FillMemory(&wPalette, sizeof(WORD), 0x77);
+ logpal.palVersion = 0x0300;
+ logpal.palNumEntries = 1;
+ logpal.palPalEntry[0].peRed = 0;
+ logpal.palPalEntry[0].peGreen = 0;
+ logpal.palPalEntry[0].peBlue = 0;
+ logpal.palPalEntry[0].peFlags = PC_EXPLICIT;
+ hPalette = CreatePalette(&logpal);
+ if (!hPalette) return FALSE;
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PALETTE, 0, NULL) == sizeof(WORD));
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PALETTE, 0, NULL) == sizeof(WORD));
+ TEST(GetObject(hPalette, sizeof(WORD), NULL) == sizeof(WORD));
+ TEST(GetObject(hPalette, 0, NULL) == sizeof(WORD));
+ TEST(GetObject(hPalette, 5, NULL) == sizeof(WORD));
+ TEST(GetObject(hPalette, -5, NULL) == sizeof(WORD));
+ TEST(GetObject(hPalette, sizeof(WORD), &wPalette) == sizeof(WORD));
+ TEST(GetObject(hPalette, sizeof(WORD)+2, &wPalette) == sizeof(WORD));
+ TEST(GetObject(hPalette, 0, &wPalette) == 0);
+ TEST(GetObject(hPalette, 1, &wPalette) == 0);
+ TEST(GetObject(hPalette, -1, &wPalette) == sizeof(WORD));
+ TEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hPalette);
+ return TRUE;
+}
+
+static INT
+Test_Brush(PTESTINFO pti)
+{
+ LOGBRUSH logbrush;
+ HBRUSH hBrush;
+
+ FillMemory(&logbrush, sizeof(LOGBRUSH), 0x77);
+ hBrush = CreateSolidBrush(RGB(1,2,3));
+ if (!hBrush) return FALSE;
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((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, 0, NULL) == sizeof(LOGBRUSH));
+ RTEST(GetObject(hBrush, 5, NULL) == sizeof(LOGBRUSH));
+ RTEST(GetObject(hBrush, -5, NULL) == sizeof(LOGBRUSH));
+
+ RTEST(GetObject(hBrush, 0, &logbrush) == 0);
+ RTEST(logbrush.lbStyle == 0x77777777);
+ RTEST(GetObject(hBrush, 5, &logbrush) == sizeof(LOGBRUSH));
+ RTEST(logbrush.lbStyle == 0);
+ RTEST(logbrush.lbColor == 0x77777701);
+
+ RTEST(GetObject(hBrush, sizeof(LOGBRUSH), &logbrush) == sizeof(LOGBRUSH));
+ RTEST(GetObject(hBrush, sizeof(LOGBRUSH)+2, &logbrush) == sizeof(LOGBRUSH));
+ RTEST(GetObject(hBrush, -1, &logbrush) == sizeof(LOGBRUSH));
+ // TODO: test all members
+
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hBrush);
+ return TRUE;
+}
+
+static INT
+Test_Pen(PTESTINFO pti)
+{
+ LOGPEN logpen;
+ HPEN hPen;
+
+ FillMemory(&logpen, sizeof(LOGPEN), 0x77);
+ hPen = CreatePen(PS_SOLID, 3, RGB(4,5,6));
+ if (!hPen) return FALSE;
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
+ RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_PEN, 0, NULL) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, sizeof(BITMAP), NULL) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, 0, NULL) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, 5, NULL) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, -5, NULL) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, sizeof(LOGPEN), &logpen) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, sizeof(LOGPEN)-1, &logpen) == 0);
+ RTEST(GetObject(hPen, sizeof(LOGPEN)+2, &logpen) == sizeof(LOGPEN));
+ RTEST(GetObject(hPen, 0, &logpen) == 0);
+ RTEST(GetObject(hPen, -5, &logpen) == sizeof(LOGPEN));
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* test if the fields are filled correctly */
+ RTEST(logpen.lopnStyle == PS_SOLID);
+
+
+ DeleteObject(hPen);
+ return TRUE;
+}
+
+static INT
+Test_ExtPen(PTESTINFO pti)
+{
+ HPEN hPen;
+ EXTLOGPEN extlogpen;
+ LOGBRUSH logbrush;
+ DWORD dwStyles[17] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+ struct
+ {
+ EXTLOGPEN extlogpen;
+ DWORD dwStyles[50];
+ } elpUserStyle;
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
+ RTEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ FillMemory(&extlogpen, sizeof(EXTLOGPEN), 0x77);
+ logbrush.lbStyle = BS_SOLID;
+ logbrush.lbColor = RGB(1,2,3);
+ logbrush.lbHatch = 22;
+ hPen = ExtCreatePen(PS_GEOMETRIC | PS_DASH, 5, &logbrush, 0, NULL);
+
+ RTEST(GDI_HANDLE_GET_TYPE(hPen) == GDI_OBJECT_TYPE_EXTPEN);
+ RTEST(GetObject((HANDLE)GDI_OBJECT_TYPE_EXTPEN, 0, NULL) == 0);
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN), NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+ RTEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+ RTEST(GetObject((HANDLE)GDI_HANDLE_GET_INDEX(hPen), 0, 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, 4, &extlogpen) == 0);
+
+ /* Nothing should be filled */
+ RTEST(extlogpen.elpPenStyle == 0x77777777);
+ RTEST(extlogpen.elpWidth == 0x77777777);
+
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN), &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN)-sizeof(DWORD), &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN)-sizeof(DWORD)-1, &extlogpen) == 0);
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN)+2, &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+ RTEST(GetObject(hPen, -5, &extlogpen) == sizeof(EXTLOGPEN)-sizeof(DWORD));
+
+ /* test if the fields are filled correctly */
+ RTEST(extlogpen.elpPenStyle == (PS_GEOMETRIC | PS_DASH));
+ RTEST(extlogpen.elpWidth == 5);
+ RTEST(extlogpen.elpBrushStyle == 0);
+ RTEST(extlogpen.elpColor == RGB(1,2,3));
+ RTEST(extlogpen.elpHatch == 22);
+ RTEST(extlogpen.elpNumEntries == 0);
+ DeleteObject(hPen);
+
+ /* A maximum of 16 Styles is allowed */
+ hPen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 5, &logbrush, 16, (CONST DWORD*)&dwStyles);
+ RTEST(GetObject(hPen, 0, NULL) == sizeof(EXTLOGPEN) + 15*sizeof(DWORD));
+ RTEST(GetObject(hPen, sizeof(EXTLOGPEN) + 15*sizeof(DWORD), &elpUserStyle) == sizeof(EXTLOGPEN) + 15*sizeof(DWORD));
+ RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[0] == 0);
+ RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[1] == 1);
+ RTEST(((EXTLOGPEN*)&elpUserStyle)->elpStyleEntry[15] == 15);
+ DeleteObject(hPen);
+
+ return TRUE;
+}
+
+static INT
+Test_Font(PTESTINFO pti)
+{
+ HFONT hFont;
+ LOGFONTA logfonta;
+ LOGFONTW logfontw;
+ EXTLOGFONTA extlogfonta;
+ EXTLOGFONTW extlogfontw;
+ ENUMLOGFONTEXA enumlogfontexa;
+ ENUMLOGFONTEXW enumlogfontexw;
+ ENUMLOGFONTEXDVA enumlogfontexdva;
+ ENUMLOGFONTEXDVW enumlogfontexdvw;
+ ENUMLOGFONTA enumlogfonta;
+ ENUMLOGFONTW enumlogfontw;
+ BYTE bData[270];
+
+ FillMemory(&logfonta, sizeof(LOGFONTA), 0x77);
+ hFont = CreateFontA(8, 8, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
+ ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
+ ANTIALIASED_QUALITY, DEFAULT_PITCH, "testfont");
+ TEST(hFont);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, 0, NULL) == sizeof(LOGFONTA));
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, 0, NULL) == sizeof(LOGFONTW));
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(LOGFONTA), NULL) == sizeof(LOGFONTA)); // 60
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTA), NULL) == sizeof(LOGFONTA)); // 156
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXA), NULL) == sizeof(LOGFONTA)); // 188
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(EXTLOGFONTA), NULL) == sizeof(LOGFONTA)); // 192
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVA), NULL) == sizeof(LOGFONTA)); // 260
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVA)+1, NULL) == sizeof(LOGFONTA)); // 260
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(LOGFONTW), NULL) == sizeof(LOGFONTW)); // 92
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTW), NULL) == sizeof(LOGFONTW)); // 284
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(EXTLOGFONTW), NULL) == sizeof(LOGFONTW)); // 320
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXW), NULL) == sizeof(LOGFONTW)); // 348
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVW), NULL) == sizeof(LOGFONTW)); // 420
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_FONT, sizeof(ENUMLOGFONTEXDVW)+1, NULL) == sizeof(LOGFONTW)); // 356!
+
+ TEST(GetObjectA(hFont, sizeof(LOGFONTA), NULL) == sizeof(LOGFONTA));
+ TEST(GetObjectA(hFont, 0, NULL) == sizeof(LOGFONTA));
+ TEST(GetObjectA(hFont, 5, NULL) == sizeof(LOGFONTA));
+ TEST(GetObjectA(hFont, -5, NULL) == sizeof(LOGFONTA));
+ TEST(GetObjectA(hFont, 0, &logfonta) == 0);
+ TEST(logfonta.lfHeight == 0x77777777);
+
+ TEST(GetObjectA(hFont, 5, &logfonta) == 5);
+ TEST(logfonta.lfHeight == 8);
+ TEST(logfonta.lfWidth == 0x77777708);
+
+ TEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA)); // 60
+ TEST(GetObjectA(hFont, sizeof(LOGFONTW), &logfontw) == sizeof(LOGFONTA)); // 92
+ TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA), &extlogfonta) == sizeof(EXTLOGFONTA)); // 192
+ TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA)+1, &extlogfonta) == sizeof(EXTLOGFONTA)+1); // 192
+ TEST(GetObjectA(hFont, sizeof(EXTLOGFONTW), &extlogfontw) == sizeof(ENUMLOGFONTEXDVA)); // 320
+
+ TEST(GetObjectA(hFont, 261, &bData) == 260); // no
+
+ /* LOGFONT / GetObjectW */
+ FillMemory(&logfontw, sizeof(LOGFONTW), 0x77);
+
+ TEST(GetObjectW(hFont, sizeof(LOGFONTW), NULL) == sizeof(LOGFONTW));
+ TEST(GetObjectW(hFont, 0, NULL) == sizeof(LOGFONTW));
+ TEST(GetObjectW(hFont, 5, NULL) == sizeof(LOGFONTW));
+ TEST(GetObjectW(hFont, -5, NULL) == sizeof(LOGFONTW));
+ TEST(GetObjectW(hFont, 0, &logfontw) == 0);
+ TEST(logfontw.lfHeight == 0x77777777);
+
+ TEST(GetObjectW(hFont, 5, &logfontw) == 5);
+ TEST(logfontw.lfHeight == 8);
+ TEST(logfontw.lfWidth == 0x77777708);
+
+ TEST(GetObjectA(hFont, sizeof(LOGFONTA), &logfonta) == sizeof(LOGFONTA)); // 60
+ TEST(logfonta.lfHeight == 8);
+ TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTA), &enumlogfonta) == sizeof(ENUMLOGFONTA)); // 156
+ TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXA), &enumlogfontexa) == sizeof(ENUMLOGFONTEXA)); // 188
+ TEST(GetObjectA(hFont, sizeof(EXTLOGFONTA), &extlogfonta) == sizeof(EXTLOGFONTA)); // 192
+ TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXDVA), &enumlogfontexdva) == sizeof(ENUMLOGFONTEXDVA)); // 260
+ TEST(GetObjectA(hFont, sizeof(ENUMLOGFONTEXDVA)+1, &enumlogfontexdva) == sizeof(ENUMLOGFONTEXDVA)); // 260
+
+ TEST(GetObjectW(hFont, sizeof(LOGFONTW), &logfontw) == sizeof(LOGFONTW)); // 92
+ TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTW), &enumlogfontw) == sizeof(ENUMLOGFONTW)); // 284
+ TEST(GetObjectW(hFont, sizeof(EXTLOGFONTW), &extlogfontw) == sizeof(EXTLOGFONTW)); // 320
+ TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXW), &enumlogfontexw) == sizeof(ENUMLOGFONTEXW)); // 348
+ TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXDVW), &enumlogfontexdvw) == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD)); // 420
+ TEST(GetObjectW(hFont, sizeof(ENUMLOGFONTEXDVW)+1, &enumlogfontexdvw) == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD)); // 356!
+
+ TEST(GetObjectW(hFont, 356, &bData) == 356);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ DeleteObject(hFont);
+
+ return TRUE;
+}
+
+static INT
+Test_Colorspace(PTESTINFO pti)
+{
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_COLORSPACE, 0, NULL) == 60);// FIXME: what structure?
+ TEST(GetLastError() == ERROR_INSUFFICIENT_BUFFER);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW((HANDLE)GDI_OBJECT_TYPE_COLORSPACE, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INSUFFICIENT_BUFFER);
+
+ return TRUE;
+}
+
+static INT
+Test_MetaDC(PTESTINFO pti)
+{
+ /* Windows does not SetLastError() on a metadc, but it doesn't seem to do anything with it */
+ HDC hMetaDC;
+ BYTE buffer[100];
+
+ hMetaDC = CreateMetaFile(NULL);
+ if(!hMetaDC) return FALSE;
+ if(((UINT)hMetaDC & GDI_HANDLE_TYPE_MASK) != GDI_OBJECT_TYPE_METADC) return FALSE;
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METADC, 0, NULL) == 0);
+ TEST(GetObjectA((HANDLE)GDI_OBJECT_TYPE_METADC, 100, &buffer) == 0);
+ TEST(GetObjectA(hMetaDC, 0, NULL) == 0);
+ TEST(GetObjectA(hMetaDC, 100, &buffer) == 0);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ return TRUE;
+}
+
+INT
+Test_GetObject(PTESTINFO pti)
+{
+
+ HRGN hRgn;
+ hRgn = CreateRectRgn(0,0,5,5);
+ SetLastError(ERROR_SUCCESS);
+ TEST(GetObjectW(hRgn, 0, NULL) == 0);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ DeleteObject(hRgn);
+
+ Test_Font(pti);
+ Test_Colorspace(pti);
+ Test_General(pti);
+ Test_Bitmap(pti);
+ Test_Dibsection(pti);
+ Test_Palette(pti);
+ Test_Brush(pti);
+ Test_Pen(pti);
+ Test_ExtPen(pti); // not implemented yet in ROS
+ Test_MetaDC(pti);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/GetStockObject.c b/rostests/apitests/gdi32api/tests/GetStockObject.c
index bdb37b9f3f0..c4fd72f71b3 100644
--- a/rostests/apitests/gdi32api/tests/GetStockObject.c
+++ b/rostests/apitests/gdi32api/tests/GetStockObject.c
@@ -1,41 +1,41 @@
-INT
-Test_GetStockObject(PTESTINFO pti)
-{
- /* Test limits and error */
- SetLastError(ERROR_SUCCESS);
- RTEST(GetStockObject(0) != NULL);
- TEST(GetStockObject(20) != NULL);
- TEST(GetStockObject(21) != NULL);
- RTEST(GetStockObject(-1) == NULL);
- RTEST(GetStockObject(9) == NULL);
- RTEST(GetStockObject(22) == NULL);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test for the stock bit */
- RTEST((UINT)GetStockObject(WHITE_BRUSH) && GDI_HANDLE_STOCK_MASK);
-
- /* Test for correct types */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(WHITE_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 0 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(LTGRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(GRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DKGRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(BLACK_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(NULL_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(WHITE_PEN)) == GDI_OBJECT_TYPE_PEN); /* 6 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(BLACK_PEN)) == GDI_OBJECT_TYPE_PEN); /* 7 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(NULL_PEN)) == GDI_OBJECT_TYPE_PEN); /* 8 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(OEM_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 10 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(ANSI_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 11 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(ANSI_VAR_FONT)) == GDI_OBJECT_TYPE_FONT); /* 12 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(SYSTEM_FONT)) == GDI_OBJECT_TYPE_FONT); /* 13 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEVICE_DEFAULT_FONT)) == GDI_OBJECT_TYPE_FONT); /* 14 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEFAULT_PALETTE)) == GDI_OBJECT_TYPE_PALETTE); /* 15 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(SYSTEM_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 16 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEFAULT_GUI_FONT)) == GDI_OBJECT_TYPE_FONT); /* 17 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DC_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 18 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DC_PEN)) == GDI_OBJECT_TYPE_PEN); /* 19 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(20)) == GDI_OBJECT_TYPE_COLORSPACE); /* 20 */
- TEST(GDI_HANDLE_GET_TYPE(GetStockObject(21)) == GDI_OBJECT_TYPE_BITMAP); /* 21 */
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_GetStockObject(PTESTINFO pti)
+{
+ /* Test limits and error */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(GetStockObject(0) != NULL);
+ TEST(GetStockObject(20) != NULL);
+ TEST(GetStockObject(21) != NULL);
+ RTEST(GetStockObject(-1) == NULL);
+ RTEST(GetStockObject(9) == NULL);
+ RTEST(GetStockObject(22) == NULL);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test for the stock bit */
+ RTEST((UINT)GetStockObject(WHITE_BRUSH) && GDI_HANDLE_STOCK_MASK);
+
+ /* Test for correct types */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(WHITE_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 0 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(LTGRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(GRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DKGRAY_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(BLACK_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(NULL_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 1 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(WHITE_PEN)) == GDI_OBJECT_TYPE_PEN); /* 6 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(BLACK_PEN)) == GDI_OBJECT_TYPE_PEN); /* 7 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(NULL_PEN)) == GDI_OBJECT_TYPE_PEN); /* 8 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(OEM_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 10 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(ANSI_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 11 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(ANSI_VAR_FONT)) == GDI_OBJECT_TYPE_FONT); /* 12 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(SYSTEM_FONT)) == GDI_OBJECT_TYPE_FONT); /* 13 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEVICE_DEFAULT_FONT)) == GDI_OBJECT_TYPE_FONT); /* 14 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEFAULT_PALETTE)) == GDI_OBJECT_TYPE_PALETTE); /* 15 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(SYSTEM_FIXED_FONT)) == GDI_OBJECT_TYPE_FONT); /* 16 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DEFAULT_GUI_FONT)) == GDI_OBJECT_TYPE_FONT); /* 17 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DC_BRUSH)) == GDI_OBJECT_TYPE_BRUSH); /* 18 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(DC_PEN)) == GDI_OBJECT_TYPE_PEN); /* 19 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(20)) == GDI_OBJECT_TYPE_COLORSPACE); /* 20 */
+ TEST(GDI_HANDLE_GET_TYPE(GetStockObject(21)) == GDI_OBJECT_TYPE_BITMAP); /* 21 */
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/SelectObject.c b/rostests/apitests/gdi32api/tests/SelectObject.c
index c45b318b1f6..88f07eec557 100644
--- a/rostests/apitests/gdi32api/tests/SelectObject.c
+++ b/rostests/apitests/gdi32api/tests/SelectObject.c
@@ -1,152 +1,152 @@
-INT
-Test_SelectObject(PTESTINFO pti)
-{
- HGDIOBJ hOldObj, hNewObj;
- HDC hScreenDC, hDC, hDC2;
- PGDI_TABLE_ENTRY pEntry;
- PDC_ATTR pDc_Attr;
- HANDLE hcmXform;
- BYTE bmBits[4] = {0};
-
- hScreenDC = GetDC(NULL);
- ASSERT (hScreenDC != NULL);
- hDC = CreateCompatibleDC(hScreenDC);
- ASSERT (hDC != NULL);
-
- /* Get the Dc_Attr for later testing */
- pEntry = &GdiHandleTable[GDI_HANDLE_GET_INDEX(hDC)];
- ASSERT(pEntry);
- pDc_Attr = pEntry->UserData;
- ASSERT(pDc_Attr);
-
- /* Test incomplete dc handle doesn't work */
- SetLastError(ERROR_SUCCESS);
- hNewObj = GetStockObject(GRAY_BRUSH);
- hOldObj = SelectObject((HDC)GDI_HANDLE_GET_INDEX(hDC), hNewObj);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- TEST(hOldObj == NULL);
- TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
- SelectObject(hDC, hOldObj);
-
- /* Test incomplete hobj handle works */
- hNewObj = GetStockObject(GRAY_BRUSH);
- hOldObj = SelectObject(hDC, (HGDIOBJ)GDI_HANDLE_GET_INDEX(hNewObj));
- TEST(hOldObj == GetStockObject(WHITE_BRUSH));
- TEST(pDc_Attr->hbrush == hNewObj);
- SelectObject(hDC, hOldObj);
-
- /* Test wrong hDC handle type */
- SetLastError(ERROR_SUCCESS);
- hNewObj = GetStockObject(GRAY_BRUSH);
- hDC2 = (HDC)((UINT_PTR)hDC & ~GDI_HANDLE_TYPE_MASK);
- hDC2 = (HDC)((UINT_PTR)hDC2 | GDI_OBJECT_TYPE_PEN);
- hOldObj = SelectObject(hDC2, hNewObj);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
- TEST(hOldObj == NULL);
- TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
-
- /* Test wrong hobj handle type */
- SetLastError(ERROR_SUCCESS);
- hNewObj = GetStockObject(GRAY_BRUSH);
- hNewObj = (HGDIOBJ)((UINT_PTR)hNewObj & ~GDI_HANDLE_TYPE_MASK);
- hNewObj = (HGDIOBJ)((UINT_PTR)hNewObj | GDI_OBJECT_TYPE_PEN);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(GetLastError() == ERROR_SUCCESS);
- TEST(hOldObj == NULL);
- TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
-
- SetLastError(ERROR_SUCCESS);
- hNewObj = (HGDIOBJ)0x00761234;
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(hOldObj == NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- SelectObject(hDC, hOldObj);
-
- /* Test DC */
- SetLastError(ERROR_SUCCESS);
- hOldObj = SelectObject(hDC, hScreenDC);
- TEST(hOldObj == NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test REGION */
- SetLastError(ERROR_SUCCESS);
- hNewObj = CreateRectRgn(0,0,0,0);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST((UINT_PTR)hOldObj == NULLREGION);
- DeleteObject(hNewObj);
-
- hNewObj = CreateRectRgn(0,0,10,10);
- TEST((UINT_PTR)SelectObject(hDC, hNewObj) == SIMPLEREGION);
- hOldObj = CreateRectRgn(5,5,20,20);
- TEST(CombineRgn(hNewObj, hNewObj, hOldObj, RGN_OR) == COMPLEXREGION);
- DeleteObject(hOldObj);
- TEST((UINT_PTR)SelectObject(hDC, hNewObj) == SIMPLEREGION); // ??? Why this?
- DeleteObject(hNewObj);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test BITMAP */
- hNewObj = CreateBitmap(2, 2, 1, 1, &bmBits);
- ASSERT(hNewObj != NULL);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BITMAP);
- hOldObj = SelectObject(hDC, hOldObj);
- TEST(hOldObj == hNewObj);
-
- /* Test CLIOBJ */
-
- /* Test PATH */
-
- /* Test PALETTE */
- SetLastError(ERROR_SUCCESS);
- hNewObj = GetStockObject(DEFAULT_PALETTE);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(hOldObj == NULL);
- TEST(GetLastError() == ERROR_INVALID_FUNCTION);
-
- /* Test COLORSPACE */
-
- /* Test FONT */
-
- /* Test PFE */
-
- /* Test BRUSH */
- hNewObj = GetStockObject(GRAY_BRUSH);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(hOldObj == GetStockObject(WHITE_BRUSH));
- TEST(pDc_Attr->hbrush == hNewObj);
- TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BRUSH);
- SelectObject(hDC, hOldObj);
-
- /* Test DC_BRUSH */
- hNewObj = GetStockObject(DC_BRUSH);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(pDc_Attr->hbrush == hNewObj);
- SelectObject(hDC, hOldObj);
-
- /* Test BRUSH color xform */
- hcmXform = (HANDLE)pDc_Attr->hcmXform;
-
-
- /* Test EMF */
-
- /* test METAFILE */
-
- /* Test ENHMETAFILE */
-
- /* Test PEN */
- hNewObj = GetStockObject(GRAY_BRUSH);
- hOldObj = SelectObject(hDC, hNewObj);
- TEST(hOldObj == GetStockObject(WHITE_BRUSH));
- TEST(pDc_Attr->hbrush == hNewObj);
- TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BRUSH);
- SelectObject(hDC, hOldObj);
-
-
- /* Test EXTPEN */
-
- /* Test METADC */
-
-
- return APISTATUS_NORMAL;
-}
-
+INT
+Test_SelectObject(PTESTINFO pti)
+{
+ HGDIOBJ hOldObj, hNewObj;
+ HDC hScreenDC, hDC, hDC2;
+ PGDI_TABLE_ENTRY pEntry;
+ PDC_ATTR pDc_Attr;
+ HANDLE hcmXform;
+ BYTE bmBits[4] = {0};
+
+ hScreenDC = GetDC(NULL);
+ ASSERT (hScreenDC != NULL);
+ hDC = CreateCompatibleDC(hScreenDC);
+ ASSERT (hDC != NULL);
+
+ /* Get the Dc_Attr for later testing */
+ pEntry = &GdiHandleTable[GDI_HANDLE_GET_INDEX(hDC)];
+ ASSERT(pEntry);
+ pDc_Attr = pEntry->UserData;
+ ASSERT(pDc_Attr);
+
+ /* Test incomplete dc handle doesn't work */
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hOldObj = SelectObject((HDC)GDI_HANDLE_GET_INDEX(hDC), hNewObj);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ TEST(hOldObj == NULL);
+ TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
+ SelectObject(hDC, hOldObj);
+
+ /* Test incomplete hobj handle works */
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hOldObj = SelectObject(hDC, (HGDIOBJ)GDI_HANDLE_GET_INDEX(hNewObj));
+ TEST(hOldObj == GetStockObject(WHITE_BRUSH));
+ TEST(pDc_Attr->hbrush == hNewObj);
+ SelectObject(hDC, hOldObj);
+
+ /* Test wrong hDC handle type */
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hDC2 = (HDC)((UINT_PTR)hDC & ~GDI_HANDLE_TYPE_MASK);
+ hDC2 = (HDC)((UINT_PTR)hDC2 | GDI_OBJECT_TYPE_PEN);
+ hOldObj = SelectObject(hDC2, hNewObj);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+ TEST(hOldObj == NULL);
+ TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
+
+ /* Test wrong hobj handle type */
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hNewObj = (HGDIOBJ)((UINT_PTR)hNewObj & ~GDI_HANDLE_TYPE_MASK);
+ hNewObj = (HGDIOBJ)((UINT_PTR)hNewObj | GDI_OBJECT_TYPE_PEN);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ TEST(hOldObj == NULL);
+ TEST(pDc_Attr->hbrush == GetStockObject(WHITE_BRUSH));
+
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = (HGDIOBJ)0x00761234;
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(hOldObj == NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ SelectObject(hDC, hOldObj);
+
+ /* Test DC */
+ SetLastError(ERROR_SUCCESS);
+ hOldObj = SelectObject(hDC, hScreenDC);
+ TEST(hOldObj == NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test REGION */
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = CreateRectRgn(0,0,0,0);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST((UINT_PTR)hOldObj == NULLREGION);
+ DeleteObject(hNewObj);
+
+ hNewObj = CreateRectRgn(0,0,10,10);
+ TEST((UINT_PTR)SelectObject(hDC, hNewObj) == SIMPLEREGION);
+ hOldObj = CreateRectRgn(5,5,20,20);
+ TEST(CombineRgn(hNewObj, hNewObj, hOldObj, RGN_OR) == COMPLEXREGION);
+ DeleteObject(hOldObj);
+ TEST((UINT_PTR)SelectObject(hDC, hNewObj) == SIMPLEREGION); // ??? Why this?
+ DeleteObject(hNewObj);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test BITMAP */
+ hNewObj = CreateBitmap(2, 2, 1, 1, &bmBits);
+ ASSERT(hNewObj != NULL);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BITMAP);
+ hOldObj = SelectObject(hDC, hOldObj);
+ TEST(hOldObj == hNewObj);
+
+ /* Test CLIOBJ */
+
+ /* Test PATH */
+
+ /* Test PALETTE */
+ SetLastError(ERROR_SUCCESS);
+ hNewObj = GetStockObject(DEFAULT_PALETTE);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(hOldObj == NULL);
+ TEST(GetLastError() == ERROR_INVALID_FUNCTION);
+
+ /* Test COLORSPACE */
+
+ /* Test FONT */
+
+ /* Test PFE */
+
+ /* Test BRUSH */
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(hOldObj == GetStockObject(WHITE_BRUSH));
+ TEST(pDc_Attr->hbrush == hNewObj);
+ TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BRUSH);
+ SelectObject(hDC, hOldObj);
+
+ /* Test DC_BRUSH */
+ hNewObj = GetStockObject(DC_BRUSH);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(pDc_Attr->hbrush == hNewObj);
+ SelectObject(hDC, hOldObj);
+
+ /* Test BRUSH color xform */
+ hcmXform = (HANDLE)pDc_Attr->hcmXform;
+
+
+ /* Test EMF */
+
+ /* test METAFILE */
+
+ /* Test ENHMETAFILE */
+
+ /* Test PEN */
+ hNewObj = GetStockObject(GRAY_BRUSH);
+ hOldObj = SelectObject(hDC, hNewObj);
+ TEST(hOldObj == GetStockObject(WHITE_BRUSH));
+ TEST(pDc_Attr->hbrush == hNewObj);
+ TEST(GDI_HANDLE_GET_TYPE(hOldObj) == GDI_OBJECT_TYPE_BRUSH);
+ SelectObject(hDC, hOldObj);
+
+
+ /* Test EXTPEN */
+
+ /* Test METADC */
+
+
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/gdi32api/tests/SetDCPenColor.c b/rostests/apitests/gdi32api/tests/SetDCPenColor.c
index 225379c0bce..98a1ec4a972 100644
--- a/rostests/apitests/gdi32api/tests/SetDCPenColor.c
+++ b/rostests/apitests/gdi32api/tests/SetDCPenColor.c
@@ -1,43 +1,43 @@
-INT
-Test_SetDCPenColor(PTESTINFO pti)
-{
- HDC hScreenDC, hDC;
-
- // Test an incorrect DC
- SetLastError(ERROR_SUCCESS);
- RTEST(SetDCPenColor(0, RGB(0,0,0)) == CLR_INVALID);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- // Get the Screen DC
- hScreenDC = GetDC(NULL);
- if (hScreenDC == NULL) return FALSE;
-
- // Test the screen DC
- SetDCPenColor(hScreenDC, RGB(1,2,3));
- TEST(SetDCPenColor(hScreenDC, RGB(4,5,6)) == RGB(1,2,3));
-
- // Create a new DC
- hDC = CreateCompatibleDC(hScreenDC);
- ReleaseDC(0, hScreenDC);
- if (hDC == NULL)
- {
- return FALSE;
- }
-
- // Select the DC_PEN and check if the pen returned by a new call is DC_PEN
- SelectObject(hDC, GetStockObject(DC_PEN));
- TEST(SelectObject(hDC, GetStockObject(BLACK_PEN)) == GetStockObject(DC_PEN));
-
- // Test an incorrect color, yes windows sets the color!
- SetDCPenColor(hDC, 0x21123456);
- TEST(SetDCPenColor(hDC, RGB(0,0,0)) == 0x21123456);
-
- // Test CLR_INVALID, it sets CLR_INVALID!
- SetDCPenColor(hDC, CLR_INVALID);
- RTEST(SetDCPenColor(hDC, RGB(0,0,0)) == CLR_INVALID);
-
- // Delete the DC
- DeleteDC(hDC);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_SetDCPenColor(PTESTINFO pti)
+{
+ HDC hScreenDC, hDC;
+
+ // Test an incorrect DC
+ SetLastError(ERROR_SUCCESS);
+ RTEST(SetDCPenColor(0, RGB(0,0,0)) == CLR_INVALID);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ // Get the Screen DC
+ hScreenDC = GetDC(NULL);
+ if (hScreenDC == NULL) return FALSE;
+
+ // Test the screen DC
+ SetDCPenColor(hScreenDC, RGB(1,2,3));
+ TEST(SetDCPenColor(hScreenDC, RGB(4,5,6)) == RGB(1,2,3));
+
+ // Create a new DC
+ hDC = CreateCompatibleDC(hScreenDC);
+ ReleaseDC(0, hScreenDC);
+ if (hDC == NULL)
+ {
+ return FALSE;
+ }
+
+ // Select the DC_PEN and check if the pen returned by a new call is DC_PEN
+ SelectObject(hDC, GetStockObject(DC_PEN));
+ TEST(SelectObject(hDC, GetStockObject(BLACK_PEN)) == GetStockObject(DC_PEN));
+
+ // Test an incorrect color, yes windows sets the color!
+ SetDCPenColor(hDC, 0x21123456);
+ TEST(SetDCPenColor(hDC, RGB(0,0,0)) == 0x21123456);
+
+ // Test CLR_INVALID, it sets CLR_INVALID!
+ SetDCPenColor(hDC, CLR_INVALID);
+ RTEST(SetDCPenColor(hDC, RGB(0,0,0)) == CLR_INVALID);
+
+ // Delete the DC
+ DeleteDC(hDC);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/gdi32api/tests/SetSysColors.c b/rostests/apitests/gdi32api/tests/SetSysColors.c
index 224a37e62ae..64e3e27e222 100644
--- a/rostests/apitests/gdi32api/tests/SetSysColors.c
+++ b/rostests/apitests/gdi32api/tests/SetSysColors.c
@@ -1,29 +1,29 @@
-#define NUM_SYSCOLORS 31
-
-INT
-Test_SetSysColors(PTESTINFO pti)
-{
- INT i;
- INT nElements[NUM_SYSCOLORS];
- COLORREF crOldColors[NUM_SYSCOLORS];
- COLORREF crColors[3] = {RGB(212, 208, 200),2,3};
-
- /* First save the Old colors */
- for (i = 0; i < NUM_SYSCOLORS; i++)
- {
- nElements[i] = i;
- crOldColors[i] = GetSysColor(i);
- }
-
- TEST((UINT)SetSysColors(0, nElements, crColors) == 1);
- RTEST((UINT)SetSysColors(1, nElements, crColors) == 1);
- RTEST((UINT)SetSysColors(2, nElements, crColors) == 1);
-
- /* try more than NUM_SYSCOLORS */
- RTEST((UINT)SetSysColors(55, nElements, crColors) == 1);
-
- /* restore old SysColors */
- SetSysColors(NUM_SYSCOLORS, nElements, crOldColors);
-
- return APISTATUS_NORMAL;
-}
+#define NUM_SYSCOLORS 31
+
+INT
+Test_SetSysColors(PTESTINFO pti)
+{
+ INT i;
+ INT nElements[NUM_SYSCOLORS];
+ COLORREF crOldColors[NUM_SYSCOLORS];
+ COLORREF crColors[3] = {RGB(212, 208, 200),2,3};
+
+ /* First save the Old colors */
+ for (i = 0; i < NUM_SYSCOLORS; i++)
+ {
+ nElements[i] = i;
+ crOldColors[i] = GetSysColor(i);
+ }
+
+ TEST((UINT)SetSysColors(0, nElements, crColors) == 1);
+ RTEST((UINT)SetSysColors(1, nElements, crColors) == 1);
+ RTEST((UINT)SetSysColors(2, nElements, crColors) == 1);
+
+ /* try more than NUM_SYSCOLORS */
+ RTEST((UINT)SetSysColors(55, nElements, crColors) == 1);
+
+ /* restore old SysColors */
+ SetSysColors(NUM_SYSCOLORS, nElements, crOldColors);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/user32api/testlist.c b/rostests/apitests/user32api/testlist.c
index a3e148d8f27..a76a7d361b8 100644
--- a/rostests/apitests/user32api/testlist.c
+++ b/rostests/apitests/user32api/testlist.c
@@ -1,31 +1,31 @@
-#ifndef _USER32TESTLIST_H
-#define _USER32TESTLIST_H
-
-#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
-
-#include "user32api.h"
-
-/* include the tests */
-#include "tests/InitializeLpkHooks.c"
-#include "tests/ScrollDC.c"
-#include "tests/ScrollWindowEx.c"
-#include "tests/RealGetWindowClass.c"
-
-/* The List of tests */
-TESTENTRY TestList[] =
-{
- { L"InitializeLpkHooks", Test_InitializeLpkHooks },
- { L"ScrollDC", Test_ScrollDC },
- { L"ScrollWindowEx", Test_ScrollWindowEx },
- { L"RealGetWindowClass", Test_RealGetWindowClass },
-};
-
-/* The function that gives us the number of tests */
-INT NumTests(void)
-{
- return ARRAY_SIZE(TestList);
-}
-
-#endif /* _USER32TESTLIST_H */
-
-/* EOF */
+#ifndef _USER32TESTLIST_H
+#define _USER32TESTLIST_H
+
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+
+#include "user32api.h"
+
+/* include the tests */
+#include "tests/InitializeLpkHooks.c"
+#include "tests/ScrollDC.c"
+#include "tests/ScrollWindowEx.c"
+#include "tests/RealGetWindowClass.c"
+
+/* The List of tests */
+TESTENTRY TestList[] =
+{
+ { L"InitializeLpkHooks", Test_InitializeLpkHooks },
+ { L"ScrollDC", Test_ScrollDC },
+ { L"ScrollWindowEx", Test_ScrollWindowEx },
+ { L"RealGetWindowClass", Test_RealGetWindowClass },
+};
+
+/* The function that gives us the number of tests */
+INT NumTests(void)
+{
+ return ARRAY_SIZE(TestList);
+}
+
+#endif /* _USER32TESTLIST_H */
+
+/* EOF */
diff --git a/rostests/apitests/user32api/tests/ScrollDC.c b/rostests/apitests/user32api/tests/ScrollDC.c
index a62054f2bd2..88be15372ac 100644
--- a/rostests/apitests/user32api/tests/ScrollDC.c
+++ b/rostests/apitests/user32api/tests/ScrollDC.c
@@ -1,57 +1,57 @@
-#include "../user32api.h"
-
-INT
-Test_ScrollDC(PTESTINFO pti)
-{
- HWND hWnd, hWnd2;
- HDC hDC;
- HRGN hrgn;
- RECT rcClip;
-
- /* Create a window */
- hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- 100, 100, 100, 100,
- NULL, NULL, g_hInstance, 0);
- UpdateWindow(hWnd);
- hDC = GetDC(hWnd);
-
- /* Assert that no update region is there */
- hrgn = CreateRectRgn(0,0,0,0);
- ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- /* Test normal scrolling */
- TEST(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE);
-
- /* Scroll with invalid update region */
- DeleteObject(hrgn);
- TEST(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE);
- hrgn = CreateRectRgn(0,0,0,0);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- /* Scroll with invalid update rect pointer */
- TEST(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == 0);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- /* Scroll with a clip rect */
- rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
- TEST(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- /* Scroll with a clip rect */
- rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
- TEST(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- /* Overlap with another window */
- hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- 30, 160, 100, 100,
- NULL, NULL, g_hInstance, 0);
- UpdateWindow(hWnd2);
-
- /* Cleanup */
- ReleaseDC(hWnd, hDC);
- DestroyWindow(hWnd);
- DestroyWindow(hWnd2);
-
- return APISTATUS_NORMAL;
-}
+#include "../user32api.h"
+
+INT
+Test_ScrollDC(PTESTINFO pti)
+{
+ HWND hWnd, hWnd2;
+ HDC hDC;
+ HRGN hrgn;
+ RECT rcClip;
+
+ /* Create a window */
+ hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+ 100, 100, 100, 100,
+ NULL, NULL, g_hInstance, 0);
+ UpdateWindow(hWnd);
+ hDC = GetDC(hWnd);
+
+ /* Assert that no update region is there */
+ hrgn = CreateRectRgn(0,0,0,0);
+ ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ /* Test normal scrolling */
+ TEST(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE);
+
+ /* Scroll with invalid update region */
+ DeleteObject(hrgn);
+ TEST(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE);
+ hrgn = CreateRectRgn(0,0,0,0);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ /* Scroll with invalid update rect pointer */
+ TEST(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == 0);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ /* Scroll with a clip rect */
+ rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
+ TEST(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ /* Scroll with a clip rect */
+ rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
+ TEST(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ /* Overlap with another window */
+ hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+ 30, 160, 100, 100,
+ NULL, NULL, g_hInstance, 0);
+ UpdateWindow(hWnd2);
+
+ /* Cleanup */
+ ReleaseDC(hWnd, hDC);
+ DestroyWindow(hWnd);
+ DestroyWindow(hWnd2);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/user32api/tests/ScrollWindowEx.c b/rostests/apitests/user32api/tests/ScrollWindowEx.c
index 5640061c4ce..2a6ed38dd0a 100644
--- a/rostests/apitests/user32api/tests/ScrollWindowEx.c
+++ b/rostests/apitests/user32api/tests/ScrollWindowEx.c
@@ -1,47 +1,47 @@
-#include "../user32api.h"
-
-INT
-Test_ScrollWindowEx(PTESTINFO pti)
-{
- HWND hWnd;
- HRGN hrgn;
- int Result;
-
- /* Create a window */
- hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
- NULL, NULL, g_hInstance, 0);
- UpdateWindow(hWnd);
-
- /* Assert that no update region is there */
- hrgn = CreateRectRgn(0,0,0,0);
- ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0);
- TEST(Result == SIMPLEREGION);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
-
- Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE);
- TEST(Result == SIMPLEREGION);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
- UpdateWindow(hWnd);
-
- // test invalid update region
- DeleteObject(hrgn);
- Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, hrgn, NULL, SW_INVALIDATE);
- TEST(Result == ERROR);
- hrgn = CreateRectRgn(0,0,0,0);
- UpdateWindow(hWnd);
-
- // Test invalid updaterect pointer
- Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, (LPRECT)1, SW_INVALIDATE);
- TEST(Result == ERROR);
- TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
-
-// test for alignment of rects
-
- DeleteObject(hrgn);
- DestroyWindow(hWnd);
-
- return APISTATUS_NORMAL;
-}
+#include "../user32api.h"
+
+INT
+Test_ScrollWindowEx(PTESTINFO pti)
+{
+ HWND hWnd;
+ HRGN hrgn;
+ int Result;
+
+ /* Create a window */
+ hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+ CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
+ NULL, NULL, g_hInstance, 0);
+ UpdateWindow(hWnd);
+
+ /* Assert that no update region is there */
+ hrgn = CreateRectRgn(0,0,0,0);
+ ASSERT(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0);
+ TEST(Result == SIMPLEREGION);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION);
+
+ Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE);
+ TEST(Result == SIMPLEREGION);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
+ UpdateWindow(hWnd);
+
+ // test invalid update region
+ DeleteObject(hrgn);
+ Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, hrgn, NULL, SW_INVALIDATE);
+ TEST(Result == ERROR);
+ hrgn = CreateRectRgn(0,0,0,0);
+ UpdateWindow(hWnd);
+
+ // Test invalid updaterect pointer
+ Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, (LPRECT)1, SW_INVALIDATE);
+ TEST(Result == ERROR);
+ TEST(GetUpdateRgn(hWnd, hrgn, FALSE) == SIMPLEREGION);
+
+// test for alignment of rects
+
+ DeleteObject(hrgn);
+ DestroyWindow(hWnd);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/user32api/user32api.c b/rostests/apitests/user32api/user32api.c
index 7b51b0fe185..b17e3aabc0c 100644
--- a/rostests/apitests/user32api/user32api.c
+++ b/rostests/apitests/user32api/user32api.c
@@ -1,18 +1,18 @@
-#include "user32api.h"
-
-HINSTANCE g_hInstance;
-
-BOOL
-IsFunctionPresent(LPWSTR lpszFunction)
-{
- return TRUE;
-}
-
-int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
-{
- g_hInstance = hInstance;
- return TestMain(L"user32api", L"user32.dll");
-}
+#include "user32api.h"
+
+HINSTANCE g_hInstance;
+
+BOOL
+IsFunctionPresent(LPWSTR lpszFunction)
+{
+ return TRUE;
+}
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ g_hInstance = hInstance;
+ return TestMain(L"user32api", L"user32.dll");
+}
diff --git a/rostests/apitests/user32api/user32api.h b/rostests/apitests/user32api/user32api.h
index 1af1dbf9676..00115ac6351 100644
--- a/rostests/apitests/user32api/user32api.h
+++ b/rostests/apitests/user32api/user32api.h
@@ -1,10 +1,10 @@
-#ifndef _USER32TEST_H
-#define _USER32TEST_H
-
-#include "../apitest.h"
-
-extern HINSTANCE g_hInstance;
-
-#endif /* _USER32TEST_H */
-
-/* EOF */
+#ifndef _USER32TEST_H
+#define _USER32TEST_H
+
+#include "../apitest.h"
+
+extern HINSTANCE g_hInstance;
+
+#endif /* _USER32TEST_H */
+
+/* EOF */
diff --git a/rostests/apitests/user32api/user32api.rbuild b/rostests/apitests/user32api/user32api.rbuild
index dd97018bc2b..646eeda53c5 100644
--- a/rostests/apitests/user32api/user32api.rbuild
+++ b/rostests/apitests/user32api/user32api.rbuild
@@ -1,12 +1,12 @@
-
- .
-
- 0x0501
- apitest
- kernel32
- user32
- gdi32
- shell32
- user32api.c
- testlist.c
-
+
+ .
+
+ 0x0501
+ apitest
+ kernel32
+ user32
+ gdi32
+ shell32
+ user32api.c
+ testlist.c
+
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
index 928a6399121..311dc0601d4 100644
--- a/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
+++ b/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
@@ -1,18 +1,18 @@
-
-INT
-Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti)
-{
- HANDLE hDirectDraw;
- HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
- ASSERT(hdc != NULL);
-
- /* Test ReactX */
- RTEST(NtGdiDdCreateDirectDrawObject(NULL) == NULL);
- RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL);
-
- /* Cleanup ReactX setup */
- DeleteDC(hdc);
- NtGdiDdDeleteDirectDrawObject(hDirectDraw);
-
- return APISTATUS_NORMAL;
-}
+
+INT
+Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti)
+{
+ HANDLE hDirectDraw;
+ HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
+ ASSERT(hdc != NULL);
+
+ /* Test ReactX */
+ RTEST(NtGdiDdCreateDirectDrawObject(NULL) == NULL);
+ RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL);
+
+ /* Cleanup ReactX setup */
+ DeleteDC(hdc);
+ NtGdiDdDeleteDirectDrawObject(hDirectDraw);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
index fb26f79ba8e..8db518d29cc 100644
--- a/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
+++ b/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
@@ -1,20 +1,20 @@
-
-INT
-Test_NtGdiDdDeleteDirectDrawObject(PTESTINFO pti)
-{
- HANDLE hDirectDraw;
- HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
- ASSERT(hdc != NULL);
-
- /* Test ReactX */
- RTEST(NtGdiDdDeleteDirectDrawObject(NULL) == FALSE);
- RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL);
- ASSERT(hDirectDraw != NULL);
- RTEST(NtGdiDdDeleteDirectDrawObject(hDirectDraw) == TRUE);
-
- /* Cleanup ReactX setup */
- DeleteDC(hdc);
- Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);
-
- return APISTATUS_NORMAL;
-}
+
+INT
+Test_NtGdiDdDeleteDirectDrawObject(PTESTINFO pti)
+{
+ HANDLE hDirectDraw;
+ HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
+ ASSERT(hdc != NULL);
+
+ /* Test ReactX */
+ RTEST(NtGdiDdDeleteDirectDrawObject(NULL) == FALSE);
+ RTEST((hDirectDraw=NtGdiDdCreateDirectDrawObject(hdc)) != NULL);
+ ASSERT(hDirectDraw != NULL);
+ RTEST(NtGdiDdDeleteDirectDrawObject(hDirectDraw) == TRUE);
+
+ /* Cleanup ReactX setup */
+ DeleteDC(hdc);
+ Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c b/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
index a73c0dc11c7..77476a6d19a 100644
--- a/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
+++ b/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
@@ -1,791 +1,791 @@
-
-/* Note : OsThunkDdQueryDirectDrawObject is the usermode name of NtGdiDdQueryDirectDrawObject
- * it lives in d3d8thk.dll and in windows 2000 it doing syscall direcly to win32k.sus
- * in windows xp and higher it call to gdi32.dll to DdEntry41 and it doing the syscall
- */
-INT
-Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
-{
- HANDLE hDirectDraw = NULL;
- DD_HALINFO *pHalInfo = NULL;
- DWORD *pCallBackFlags = NULL;
- LPD3DNTHAL_CALLBACKS puD3dCallbacks = NULL;
- LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData = NULL;
- PDD_D3DBUFCALLBACKS puD3dBufferCallbacks = NULL;
- LPDDSURFACEDESC puD3dTextureFormats = NULL;
- DWORD *puNumHeaps = NULL;
- VIDEOMEMORY *puvmList = NULL;
- DWORD *puNumFourCC = NULL;
- DWORD *puFourCC = NULL;
-
- DD_HALINFO HalInfo;
- DD_HALINFO oldHalInfo;
- DWORD CallBackFlags[4];
-
- D3DNTHAL_CALLBACKS D3dCallbacks;
- D3DNTHAL_CALLBACKS oldD3dCallbacks;
-
- D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;
- D3DNTHAL_GLOBALDRIVERDATA oldD3dDriverData;
-
- DD_D3DBUFCALLBACKS D3dBufferCallbacks;
- DD_D3DBUFCALLBACKS oldD3dBufferCallbacks;
-
- DDSURFACEDESC2 D3dTextureFormats[100];
- DWORD NumHeaps = 0;
- VIDEOMEMORY vmList;
- //DWORD NumFourCC = 0;
- //DWORD FourCC = 0;
- DEVMODE devmode;
- HDC hdc;
-
- DWORD dwTextureCounter = 0;
- DDSURFACEDESC *myDesc = NULL;
-
- /* clear data */
- memset(&vmList,0,sizeof(VIDEOMEMORY));
- memset(&D3dTextureFormats,0,sizeof(DDSURFACEDESC));
- memset(&D3dBufferCallbacks,0,sizeof(DD_D3DBUFCALLBACKS));
- memset(&D3dDriverData,0,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
- memset(&D3dCallbacks,0,sizeof(D3DNTHAL_CALLBACKS));
- memset(&HalInfo,0,sizeof(DD_HALINFO));
- memset(CallBackFlags,0,sizeof(DWORD)*3);
-
- /* Get currenet display mode */
- EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
-
- /* Create hdc that we can use */
- hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
- ASSERT(hdc != NULL);
-
-
- /* Create ReactX handle */
- hDirectDraw = (HANDLE) NtGdiDdCreateDirectDrawObject(hdc);
- ASSERT(hDirectDraw != NULL);
-
- /* Start Test ReactX NtGdiDdQueryDirectDrawObject function */
-
- /* testing OsThunkDdQueryDirectDrawObject( NULL, .... */
- RTEST(NtGdiDdQueryDirectDrawObject( NULL, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC) == FALSE);
-
- RTEST(pHalInfo == NULL);
- RTEST(pCallBackFlags == NULL);
- RTEST(puD3dCallbacks == NULL);
- RTEST(puD3dDriverData == NULL);
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, NULL, .... */
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC) == FALSE);
-
- RTEST(pHalInfo == NULL);
- RTEST(pCallBackFlags == NULL);
- RTEST(puD3dCallbacks == NULL);
- RTEST(puD3dDriverData == NULL);
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, NULL, .... */
- pHalInfo = &HalInfo;
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
-
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags == NULL);
- RTEST(puD3dCallbacks == NULL);
- RTEST(puD3dDriverData == NULL);
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
- (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
- {
- RTEST(pHalInfo->dwSize != sizeof(DD_HALINFO));
- ASSERT(pHalInfo->dwSize != sizeof(DD_HALINFO));
- }
-
- if (pHalInfo->dwSize == sizeof(DD_HALINFO))
- {
- /*the offset, in bytes, to primary surface in the display memory */
- /* some graphic card like sis 760 GX, Nvida GF7900GS does not set any offset at all */
- // RTEST(pHalInfo->vmiData.fpPrimary != 0 );
-
- /* unsuse always 0 */
- RTEST(pHalInfo->vmiData.dwFlags == 0 );
-
- /* Check the res */
- RTEST(pHalInfo->vmiData.dwDisplayWidth == devmode.dmPelsWidth );
- RTEST(pHalInfo->vmiData.dwDisplayHeight == devmode.dmPelsHeight );
-
- /* This can never be test for it is who big the line is after it been align displayPitch */
- RTEST(pHalInfo->vmiData.lDisplayPitch != 0);
-
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) );
- ASSERT(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));
-
- /* We can not check if it DDPF_RGB flags been set for primary surface
- * for it can be DDPF_PALETTEINDEXED1,DDPF_PALETTEINDEXED2,DDPF_PALETTEINDEXED4,DDPF_PALETTEINDEXED8, DDPF_PALETTEINDEXEDTO8, DDPF_RGB, DDPF_YUV
- */
- RTEST( (pHalInfo->vmiData.ddpfDisplay.dwFlags & (DDPF_PALETTEINDEXED1 | DDPF_PALETTEINDEXED2 | DDPF_PALETTEINDEXED4 |
- DDPF_PALETTEINDEXED8 | DDPF_PALETTEINDEXEDTO8 | DDPF_RGB | DDPF_YUV)) != 0);
-
-
- /* No fourcc are use on primary screen */
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwFourCC == 0 );
-
- /* Count RGB Bits 8/16/24/32 */
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount == devmode.dmBitsPerPel );
-
- /* The rgb mask can not be detected in user mode, for it can be 15Bpp convert to 16Bpp mode, so we have no way detect correct mask
- * But the mask can never be Zero
- */
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask != 0 );
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask != 0 );
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask != 0 );
-
- /* primary never set the alpha blend mask */
- RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask == 0 );
-
- /* This can not be test at usermode it is each hardware drv that fill in it,
- * only way to found them is to use this call */
- // pHalInfo->vmiData->dwOffscreenAlign
- // pHalInfo->vmiData->dwOverlayAlign
- // pHalInfo->vmiData->dwTextureAlign
- // pHalInfo->vmiData->dwZBufferAlign
- // pHalInfo->vmiData->dwAlphaAlign
-
- /* the primary display address */
- RTEST( ( (DWORD)pHalInfo->vmiData.pvPrimary & (~0x80000000)) != 0 );
-
- /* test see if we got back the pvmList here
- * acording msdn vmiData.dwNumHeaps and vmiData.pvmList
- * exists for _VIDEOMEMORYINFO but they do not, it reviews
- * in ddk and wdk and own testcase
- */
- // RTEST(pHalInfo->vmiData.dwNumHeaps != 0 );
- // RTEST(pHalInfo->vmiData.pvmList != 0 );
-
- /* Test see if we got any hardware acclartions for 2d or 3d, this always fill in
- * that mean we found a bugi drv and dx does not work on this drv
- */
-
- /* the SIS 760 GX will never fill it in, it is a bugi drv */
- RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));
-
- /* Testing see if we got any hw support for
- * This test can fail on video card that does not support 2d/overlay/3d
- */
- RTEST( pHalInfo->ddCaps.dwCaps != 0);
- RTEST( pHalInfo->ddCaps.ddsCaps.dwCaps != 0);
-
- /* This flags is obsolete and should not be used by the driver */
- RTEST( pHalInfo->ddCaps.dwFXAlphaCaps == 0);
-
-
- /* basic dx 2 is found if this flags not set
- * if this fail we do not have a dx driver install acodring ms, some version of windows it
- * is okay this fail and drv does then only support basic dx
- *
- */
- if (pHalInfo->dwFlags != 0)
- {
- RTEST( (pHalInfo->dwFlags & (DDHALINFO_GETDRIVERINFOSET | DDHALINFO_GETDRIVERINFO2)) != 0 );
- RTEST( ( (DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );
- ASSERT( ((DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );
- }
-
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
-
-
- /* the pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE will be ignore, only way detect it proper follow code,
- * this will be fill in of all drv, it is not only for 3d stuff, this always fill by win32k.sys or dxg.sys depns
- * if it windows 2000 or windows xp/2003
- *
- * point to kmode direcly to the win32k.sys, win32k.sys is kmode and it is kmode address we getting back
- */
- RTEST( ( (DWORD)pHalInfo->lpD3DGlobalDriverData & (~0x80000000)) != 0 );
- RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );
- RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );
- }
-
- /* Backup DD_HALINFO so we do not need resting it */
- RtlCopyMemory(&oldHalInfo, &HalInfo, sizeof(DD_HALINFO));
-
- /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, .... */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks == NULL);
- RTEST(puD3dDriverData == NULL);
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* We do not retesting DD_HALINFO, instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
-
- /* Rember on some nivida drv the pCallBackFlags will not be set even they api exists in the drv
- * known workaround is to check if the drv really return a kmode pointer for the drv functions
- * we want to use.
- */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, D3dCallbacks, NULL, .... */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
-
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- /* rember puD3dCallbacks shall never return NULL */
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- /* the pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE will be ignore, only way detect it proper follow code,
- * this will be fill in of all drv, it is not only for 3d stuff, this always fill by win32k.sys or dxg.sys depns
- * if it windows 2000 or windows xp/2003
- */
- RTEST(puD3dCallbacks->dwSize == sizeof(D3DNTHAL_CALLBACKS));
-
- /* Nivda like GF7900GS will not follow ms design rule here,
- * ContextDestroyAll must alwyas be NULL for it is not longer inuse in windows 2000 and higher
- */
- RTEST(puD3dCallbacks->ContextDestroyAll == NULL);
-
- /* Nivda like GF7900GS will not follow ms design rule here,
- * SceneCapture must alwyas be NULL for it is not longer inuse in windows 2000 and higher
- */
- RTEST(puD3dCallbacks->SceneCapture == NULL);
- RTEST(puD3dCallbacks->dwReserved10 == 0);
- RTEST(puD3dCallbacks->dwReserved11 == 0);
- RTEST(puD3dCallbacks->dwReserved22 == 0);
- RTEST(puD3dCallbacks->dwReserved23 == 0);
- RTEST(puD3dCallbacks->dwReserved == 0);
- RTEST(puD3dCallbacks->TextureCreate == NULL);
- RTEST(puD3dCallbacks->TextureDestroy == NULL);
- RTEST(puD3dCallbacks->TextureSwap == NULL);
- RTEST(puD3dCallbacks->TextureGetSurf == NULL);
- RTEST(puD3dCallbacks->dwReserved12 == 0);
- RTEST(puD3dCallbacks->dwReserved13 == 0);
- RTEST(puD3dCallbacks->dwReserved14 == 0);
- RTEST(puD3dCallbacks->dwReserved15 == 0);
- RTEST(puD3dCallbacks->dwReserved16 == 0);
- RTEST(puD3dCallbacks->dwReserved17 == 0);
- RTEST(puD3dCallbacks->dwReserved18 == 0);
- RTEST(puD3dCallbacks->dwReserved19 == 0);
- RTEST(puD3dCallbacks->dwReserved20 == 0);
- RTEST(puD3dCallbacks->dwReserved21 == 0);
- RTEST(puD3dCallbacks->dwReserved24 == 0);
- RTEST(puD3dCallbacks->dwReserved0 == 0);
- RTEST(puD3dCallbacks->dwReserved1 == 0);
- RTEST(puD3dCallbacks->dwReserved2 == 0);
- RTEST(puD3dCallbacks->dwReserved3 == 0);
- RTEST(puD3dCallbacks->dwReserved4 == 0);
- RTEST(puD3dCallbacks->dwReserved5 == 0);
- RTEST(puD3dCallbacks->dwReserved6 == 0);
- RTEST(puD3dCallbacks->dwReserved7 == 0);
- RTEST(puD3dCallbacks->dwReserved8 == 0);
- RTEST(puD3dCallbacks->dwReserved9 == 0);
-
- /* how detect puD3dCallbacks->ContextCreate and puD3dCallbacks->ContextDestroy shall be set for bugi drv like nivda ? */
- /* pointer direcly to the graphic drv, it is kmode pointer */
- // RTEST( ( (DWORD)puD3dCallbacks->ContextCreate & (~0x80000000)) != 0 );
- // RTEST( ( (DWORD)puD3dCallbacks->ContextDestroy & (~0x80000000)) != 0 );
-
- RTEST(puD3dDriverData == NULL);
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* We do not retesting DD_HALINFO, instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* Backup D3DNTHAL_CALLBACKS so we do not need resting it */
- RtlCopyMemory(&oldD3dCallbacks, &D3dCallbacks, sizeof(D3DNTHAL_CALLBACKS));
-
-
-/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
- puD3dDriverData = &D3dDriverData;
-
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
- RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- RTEST(puD3dDriverData != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dBufferCallbacks == NULL);
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* We retesting pCallBackFlags */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* We do not retesting instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
-
- /* start test of puD3dDriverData */
-
- RTEST(puD3dDriverData->dwSize == sizeof(D3DNTHAL_GLOBALDRIVERDATA));
- RTEST(puD3dDriverData->hwCaps.dwSize == sizeof(D3DNTHALDEVICEDESC_V1));
- RTEST(puD3dDriverData->hwCaps.dtcTransformCaps.dwSize == sizeof(D3DTRANSFORMCAPS));
- RTEST(puD3dDriverData->hwCaps.dlcLightingCaps.dwSize == sizeof(D3DLIGHTINGCAPS));
- RTEST(puD3dDriverData->hwCaps.dpcLineCaps.dwSize == sizeof(D3DPRIMCAPS));
- RTEST(puD3dDriverData->hwCaps.dpcTriCaps.dwSize == sizeof(D3DPRIMCAPS));
- RTEST(puD3dDriverData->hwCaps.dwMaxBufferSize == 0);
- RTEST(puD3dDriverData->hwCaps.dwMaxVertexCount == 0);
-
- /* Backup D3DHAL_GLOBALDRIVERDATA so we do not need resting it */
- RtlCopyMemory(&oldD3dDriverData, &D3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA));
-
-/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
- puD3dDriverData = &D3dDriverData;
- puD3dBufferCallbacks = &D3dBufferCallbacks;
-
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
- RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
- RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
- RTEST(pHalInfo != NULL);
- RTEST(pCallBackFlags != NULL);
-
- if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )
- {
- RTEST(puD3dCallbacks != NULL);
- RTEST(puD3dDriverData != NULL);
- RTEST(puD3dBufferCallbacks != NULL);
- }
-
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- RTEST(puD3dDriverData != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dBufferCallbacks != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dTextureFormats == NULL);
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* We retesting the flags */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* We do not retesting instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
- RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
-
- /* start test of puD3dBufferCallbacks */
- RTEST(puD3dBufferCallbacks->dwSize == sizeof(DD_D3DBUFCALLBACKS));
- if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CANCREATED3DBUF)
- {
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
- RTEST( ( (DWORD)puD3dBufferCallbacks->CanCreateD3DBuffer & (~0x80000000)) != 0 );
- }
- else
- {
- RTEST( puD3dBufferCallbacks->CanCreateD3DBuffer == NULL);
- }
-
- if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CREATED3DBUF)
- {
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
- RTEST( ( (DWORD)puD3dBufferCallbacks->CreateD3DBuffer & (~0x80000000)) != 0 );
- }
- else
- {
- RTEST( puD3dBufferCallbacks->CreateD3DBuffer == NULL);
- }
-
- if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_DESTROYD3DBUF)
- {
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
- RTEST( ( (DWORD)puD3dBufferCallbacks->DestroyD3DBuffer & (~0x80000000)) != 0 );
- }
- else
- {
- RTEST( puD3dBufferCallbacks->DestroyD3DBuffer == NULL);
- }
-
- if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_LOCKD3DBUF)
- {
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
- RTEST( ( (DWORD)puD3dBufferCallbacks->LockD3DBuffer & (~0x80000000)) != 0 );
- }
- else
- {
- RTEST( puD3dBufferCallbacks->LockD3DBuffer == NULL);
- }
-
- if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_UNLOCKD3DBUF)
- {
- /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
- RTEST( ( (DWORD)puD3dBufferCallbacks->UnlockD3DBuffer & (~0x80000000)) != 0 );
- }
- else
- {
- RTEST( puD3dBufferCallbacks->UnlockD3DBuffer == NULL);
- }
-
- /* Backup DD_D3DBUFCALLBACKS so we do not need resting it */
- RtlCopyMemory(&oldD3dBufferCallbacks, &D3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS));
-
-
-/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
- puD3dDriverData = &D3dDriverData;
- puD3dBufferCallbacks = &D3dBufferCallbacks;
-
- /* It is forbein to return a DDSURFACEDESC2 it should always be DDSURFACEDESC
- This is only for detected bad drivers that does not follow the rules, if they
- does not follow tthe rules, not everthing being copy then in gdi32.dll
- gdi32.dll always assume it is DDSURFACEDESC size
- */
- if (puD3dDriverData->dwNumTextureFormats != 0)
- {
- puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
- }
-
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
- RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
- RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
- RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
-
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- RTEST(puD3dDriverData != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dBufferCallbacks != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dTextureFormats != NULL);
- ASSERT(puD3dTextureFormats != NULL);
-
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
- RTEST(puNumHeaps == NULL);
- RTEST(puvmList == NULL);
-
- /* We retesting the flags */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* We do not retesting instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
- RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
- RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
-
- /* start test of dwNumTextureFormats */
- if (puD3dDriverData->dwNumTextureFormats != 0)
- {
- myDesc = puD3dTextureFormats;
- for (dwTextureCounter=0;dwTextureCounterdwNumTextureFormats;dwTextureCounter++)
- {
- RTEST(myDesc->dwSize == sizeof(DDSURFACEDESC))
- ASSERT(myDesc->dwSize == sizeof(DDSURFACEDESC));
-
- RTEST( (myDesc->dwFlags & (~(DDSD_CAPS|DDSD_PIXELFORMAT))) == 0);
- RTEST(myDesc->dwHeight == 0);
- RTEST(myDesc->dwWidth == 0);
- RTEST(myDesc->dwLinearSize == 0);
- RTEST(myDesc->dwBackBufferCount == 0);
- RTEST(myDesc->dwZBufferBitDepth == 0);
- RTEST(myDesc->dwAlphaBitDepth == 0);
- RTEST(myDesc->dwReserved == 0);
- RTEST(myDesc->lpSurface == 0);
- RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceLowValue == 0);
- RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceHighValue == 0);
- RTEST(myDesc->ddckCKDestBlt.dwColorSpaceLowValue == 0);
- RTEST(myDesc->ddckCKDestBlt.dwColorSpaceHighValue == 0);
- RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceLowValue == 0);
- RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceHighValue == 0);
- RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceLowValue == 0);
- RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceHighValue == 0);
- RTEST(myDesc->ddpfPixelFormat.dwSize == sizeof(DDPIXELFORMAT));
- RTEST(myDesc->ddpfPixelFormat.dwFlags != 0);
- if (myDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)
- {
- RTEST(myDesc->ddpfPixelFormat.dwFourCC != 0);
- }
- RTEST(myDesc->ddsCaps.dwCaps == DDSCAPS_TEXTURE);
-
- myDesc = (DDSURFACEDESC *) (((DWORD) myDesc) + sizeof(DDSURFACEDESC));
- }
- }
-
-
- /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, NULL, */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
- puD3dDriverData = &D3dDriverData;
- puD3dBufferCallbacks = &D3dBufferCallbacks;
- puNumHeaps = &NumHeaps;
-
- if (puD3dDriverData->dwNumTextureFormats != 0)
- {
- RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
- }
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
- RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
- RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
- RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
-
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- RTEST(puD3dDriverData != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dBufferCallbacks != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dTextureFormats != NULL);
- ASSERT(puD3dTextureFormats != NULL);
-
- RTEST(puNumHeaps != NULL);
- ASSERT(puNumHeaps != NULL);
- RTEST(NumHeaps == 0);
-
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
-
- RTEST(puvmList == NULL);
-
- /* We retesting the flags */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* We do not retesting instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
- RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
- RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
- /* we skip resting texture */
-
-
- /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, puvmList, NULL, */
- pHalInfo = &HalInfo;
- pCallBackFlags = CallBackFlags;
- puD3dCallbacks = &D3dCallbacks;
- puD3dDriverData = &D3dDriverData;
- puD3dBufferCallbacks = &D3dBufferCallbacks;
- puNumHeaps = &NumHeaps;
- puvmList = &vmList;
-
- if (puD3dDriverData->dwNumTextureFormats != 0)
- {
- RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
- }
- RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
- RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
- RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
- RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
- RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
-
- RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
- pCallBackFlags, puD3dCallbacks,
- puD3dDriverData, puD3dBufferCallbacks,
- puD3dTextureFormats, puNumHeaps,
- puvmList, puNumFourCC,
- puFourCC)== FALSE);
-
- RTEST(pHalInfo != NULL);
- ASSERT(pHalInfo != NULL);
-
- RTEST(pCallBackFlags != NULL);
- ASSERT(pCallBackFlags != NULL);
-
- RTEST(puD3dCallbacks != NULL);
- ASSERT(puD3dCallbacks != NULL);
-
- RTEST(puD3dDriverData != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dBufferCallbacks != NULL);
- ASSERT(puD3dDriverData != NULL);
-
- RTEST(puD3dTextureFormats != NULL);
- ASSERT(puD3dTextureFormats != NULL);
-
- RTEST(puNumHeaps != NULL);
- ASSERT(puNumHeaps != NULL);
- RTEST(NumHeaps == 0);
-
- RTEST(puvmList != NULL);
-
- RTEST(puNumFourCC == NULL);
- RTEST(puFourCC == NULL);
-
-
-
- /* We retesting the flags */
- RTEST(pCallBackFlags[0] != 0);
- RTEST(pCallBackFlags[1] != 0);
- RTEST(pCallBackFlags[2] == 0);
-
- /* We do not retesting instead we compare it */
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
- RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
- RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
- RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
- /* we skip resting texture */
-
- /* Todo
- * adding test for
- * puNumFourCC
- * puFourCC
- */
-
- /* Cleanup ReactX setup */
- DeleteDC(hdc);
- Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);
-
- return APISTATUS_NORMAL;
-}
+
+/* Note : OsThunkDdQueryDirectDrawObject is the usermode name of NtGdiDdQueryDirectDrawObject
+ * it lives in d3d8thk.dll and in windows 2000 it doing syscall direcly to win32k.sus
+ * in windows xp and higher it call to gdi32.dll to DdEntry41 and it doing the syscall
+ */
+INT
+Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
+{
+ HANDLE hDirectDraw = NULL;
+ DD_HALINFO *pHalInfo = NULL;
+ DWORD *pCallBackFlags = NULL;
+ LPD3DNTHAL_CALLBACKS puD3dCallbacks = NULL;
+ LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData = NULL;
+ PDD_D3DBUFCALLBACKS puD3dBufferCallbacks = NULL;
+ LPDDSURFACEDESC puD3dTextureFormats = NULL;
+ DWORD *puNumHeaps = NULL;
+ VIDEOMEMORY *puvmList = NULL;
+ DWORD *puNumFourCC = NULL;
+ DWORD *puFourCC = NULL;
+
+ DD_HALINFO HalInfo;
+ DD_HALINFO oldHalInfo;
+ DWORD CallBackFlags[4];
+
+ D3DNTHAL_CALLBACKS D3dCallbacks;
+ D3DNTHAL_CALLBACKS oldD3dCallbacks;
+
+ D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;
+ D3DNTHAL_GLOBALDRIVERDATA oldD3dDriverData;
+
+ DD_D3DBUFCALLBACKS D3dBufferCallbacks;
+ DD_D3DBUFCALLBACKS oldD3dBufferCallbacks;
+
+ DDSURFACEDESC2 D3dTextureFormats[100];
+ DWORD NumHeaps = 0;
+ VIDEOMEMORY vmList;
+ //DWORD NumFourCC = 0;
+ //DWORD FourCC = 0;
+ DEVMODE devmode;
+ HDC hdc;
+
+ DWORD dwTextureCounter = 0;
+ DDSURFACEDESC *myDesc = NULL;
+
+ /* clear data */
+ memset(&vmList,0,sizeof(VIDEOMEMORY));
+ memset(&D3dTextureFormats,0,sizeof(DDSURFACEDESC));
+ memset(&D3dBufferCallbacks,0,sizeof(DD_D3DBUFCALLBACKS));
+ memset(&D3dDriverData,0,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+ memset(&D3dCallbacks,0,sizeof(D3DNTHAL_CALLBACKS));
+ memset(&HalInfo,0,sizeof(DD_HALINFO));
+ memset(CallBackFlags,0,sizeof(DWORD)*3);
+
+ /* Get currenet display mode */
+ EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+
+ /* Create hdc that we can use */
+ hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
+ ASSERT(hdc != NULL);
+
+
+ /* Create ReactX handle */
+ hDirectDraw = (HANDLE) NtGdiDdCreateDirectDrawObject(hdc);
+ ASSERT(hDirectDraw != NULL);
+
+ /* Start Test ReactX NtGdiDdQueryDirectDrawObject function */
+
+ /* testing OsThunkDdQueryDirectDrawObject( NULL, .... */
+ RTEST(NtGdiDdQueryDirectDrawObject( NULL, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC) == FALSE);
+
+ RTEST(pHalInfo == NULL);
+ RTEST(pCallBackFlags == NULL);
+ RTEST(puD3dCallbacks == NULL);
+ RTEST(puD3dDriverData == NULL);
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, NULL, .... */
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC) == FALSE);
+
+ RTEST(pHalInfo == NULL);
+ RTEST(pCallBackFlags == NULL);
+ RTEST(puD3dCallbacks == NULL);
+ RTEST(puD3dDriverData == NULL);
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, NULL, .... */
+ pHalInfo = &HalInfo;
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags == NULL);
+ RTEST(puD3dCallbacks == NULL);
+ RTEST(puD3dDriverData == NULL);
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
+ (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
+ {
+ RTEST(pHalInfo->dwSize != sizeof(DD_HALINFO));
+ ASSERT(pHalInfo->dwSize != sizeof(DD_HALINFO));
+ }
+
+ if (pHalInfo->dwSize == sizeof(DD_HALINFO))
+ {
+ /*the offset, in bytes, to primary surface in the display memory */
+ /* some graphic card like sis 760 GX, Nvida GF7900GS does not set any offset at all */
+ // RTEST(pHalInfo->vmiData.fpPrimary != 0 );
+
+ /* unsuse always 0 */
+ RTEST(pHalInfo->vmiData.dwFlags == 0 );
+
+ /* Check the res */
+ RTEST(pHalInfo->vmiData.dwDisplayWidth == devmode.dmPelsWidth );
+ RTEST(pHalInfo->vmiData.dwDisplayHeight == devmode.dmPelsHeight );
+
+ /* This can never be test for it is who big the line is after it been align displayPitch */
+ RTEST(pHalInfo->vmiData.lDisplayPitch != 0);
+
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) );
+ ASSERT(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));
+
+ /* We can not check if it DDPF_RGB flags been set for primary surface
+ * for it can be DDPF_PALETTEINDEXED1,DDPF_PALETTEINDEXED2,DDPF_PALETTEINDEXED4,DDPF_PALETTEINDEXED8, DDPF_PALETTEINDEXEDTO8, DDPF_RGB, DDPF_YUV
+ */
+ RTEST( (pHalInfo->vmiData.ddpfDisplay.dwFlags & (DDPF_PALETTEINDEXED1 | DDPF_PALETTEINDEXED2 | DDPF_PALETTEINDEXED4 |
+ DDPF_PALETTEINDEXED8 | DDPF_PALETTEINDEXEDTO8 | DDPF_RGB | DDPF_YUV)) != 0);
+
+
+ /* No fourcc are use on primary screen */
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwFourCC == 0 );
+
+ /* Count RGB Bits 8/16/24/32 */
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount == devmode.dmBitsPerPel );
+
+ /* The rgb mask can not be detected in user mode, for it can be 15Bpp convert to 16Bpp mode, so we have no way detect correct mask
+ * But the mask can never be Zero
+ */
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask != 0 );
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask != 0 );
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask != 0 );
+
+ /* primary never set the alpha blend mask */
+ RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask == 0 );
+
+ /* This can not be test at usermode it is each hardware drv that fill in it,
+ * only way to found them is to use this call */
+ // pHalInfo->vmiData->dwOffscreenAlign
+ // pHalInfo->vmiData->dwOverlayAlign
+ // pHalInfo->vmiData->dwTextureAlign
+ // pHalInfo->vmiData->dwZBufferAlign
+ // pHalInfo->vmiData->dwAlphaAlign
+
+ /* the primary display address */
+ RTEST( ( (DWORD)pHalInfo->vmiData.pvPrimary & (~0x80000000)) != 0 );
+
+ /* test see if we got back the pvmList here
+ * acording msdn vmiData.dwNumHeaps and vmiData.pvmList
+ * exists for _VIDEOMEMORYINFO but they do not, it reviews
+ * in ddk and wdk and own testcase
+ */
+ // RTEST(pHalInfo->vmiData.dwNumHeaps != 0 );
+ // RTEST(pHalInfo->vmiData.pvmList != 0 );
+
+ /* Test see if we got any hardware acclartions for 2d or 3d, this always fill in
+ * that mean we found a bugi drv and dx does not work on this drv
+ */
+
+ /* the SIS 760 GX will never fill it in, it is a bugi drv */
+ RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));
+
+ /* Testing see if we got any hw support for
+ * This test can fail on video card that does not support 2d/overlay/3d
+ */
+ RTEST( pHalInfo->ddCaps.dwCaps != 0);
+ RTEST( pHalInfo->ddCaps.ddsCaps.dwCaps != 0);
+
+ /* This flags is obsolete and should not be used by the driver */
+ RTEST( pHalInfo->ddCaps.dwFXAlphaCaps == 0);
+
+
+ /* basic dx 2 is found if this flags not set
+ * if this fail we do not have a dx driver install acodring ms, some version of windows it
+ * is okay this fail and drv does then only support basic dx
+ *
+ */
+ if (pHalInfo->dwFlags != 0)
+ {
+ RTEST( (pHalInfo->dwFlags & (DDHALINFO_GETDRIVERINFOSET | DDHALINFO_GETDRIVERINFO2)) != 0 );
+ RTEST( ( (DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );
+ ASSERT( ((DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );
+ }
+
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+
+
+ /* the pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE will be ignore, only way detect it proper follow code,
+ * this will be fill in of all drv, it is not only for 3d stuff, this always fill by win32k.sys or dxg.sys depns
+ * if it windows 2000 or windows xp/2003
+ *
+ * point to kmode direcly to the win32k.sys, win32k.sys is kmode and it is kmode address we getting back
+ */
+ RTEST( ( (DWORD)pHalInfo->lpD3DGlobalDriverData & (~0x80000000)) != 0 );
+ RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );
+ RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );
+ }
+
+ /* Backup DD_HALINFO so we do not need resting it */
+ RtlCopyMemory(&oldHalInfo, &HalInfo, sizeof(DD_HALINFO));
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, .... */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks == NULL);
+ RTEST(puD3dDriverData == NULL);
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* We do not retesting DD_HALINFO, instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+
+ /* Rember on some nivida drv the pCallBackFlags will not be set even they api exists in the drv
+ * known workaround is to check if the drv really return a kmode pointer for the drv functions
+ * we want to use.
+ */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, D3dCallbacks, NULL, .... */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ /* rember puD3dCallbacks shall never return NULL */
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ /* the pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE will be ignore, only way detect it proper follow code,
+ * this will be fill in of all drv, it is not only for 3d stuff, this always fill by win32k.sys or dxg.sys depns
+ * if it windows 2000 or windows xp/2003
+ */
+ RTEST(puD3dCallbacks->dwSize == sizeof(D3DNTHAL_CALLBACKS));
+
+ /* Nivda like GF7900GS will not follow ms design rule here,
+ * ContextDestroyAll must alwyas be NULL for it is not longer inuse in windows 2000 and higher
+ */
+ RTEST(puD3dCallbacks->ContextDestroyAll == NULL);
+
+ /* Nivda like GF7900GS will not follow ms design rule here,
+ * SceneCapture must alwyas be NULL for it is not longer inuse in windows 2000 and higher
+ */
+ RTEST(puD3dCallbacks->SceneCapture == NULL);
+ RTEST(puD3dCallbacks->dwReserved10 == 0);
+ RTEST(puD3dCallbacks->dwReserved11 == 0);
+ RTEST(puD3dCallbacks->dwReserved22 == 0);
+ RTEST(puD3dCallbacks->dwReserved23 == 0);
+ RTEST(puD3dCallbacks->dwReserved == 0);
+ RTEST(puD3dCallbacks->TextureCreate == NULL);
+ RTEST(puD3dCallbacks->TextureDestroy == NULL);
+ RTEST(puD3dCallbacks->TextureSwap == NULL);
+ RTEST(puD3dCallbacks->TextureGetSurf == NULL);
+ RTEST(puD3dCallbacks->dwReserved12 == 0);
+ RTEST(puD3dCallbacks->dwReserved13 == 0);
+ RTEST(puD3dCallbacks->dwReserved14 == 0);
+ RTEST(puD3dCallbacks->dwReserved15 == 0);
+ RTEST(puD3dCallbacks->dwReserved16 == 0);
+ RTEST(puD3dCallbacks->dwReserved17 == 0);
+ RTEST(puD3dCallbacks->dwReserved18 == 0);
+ RTEST(puD3dCallbacks->dwReserved19 == 0);
+ RTEST(puD3dCallbacks->dwReserved20 == 0);
+ RTEST(puD3dCallbacks->dwReserved21 == 0);
+ RTEST(puD3dCallbacks->dwReserved24 == 0);
+ RTEST(puD3dCallbacks->dwReserved0 == 0);
+ RTEST(puD3dCallbacks->dwReserved1 == 0);
+ RTEST(puD3dCallbacks->dwReserved2 == 0);
+ RTEST(puD3dCallbacks->dwReserved3 == 0);
+ RTEST(puD3dCallbacks->dwReserved4 == 0);
+ RTEST(puD3dCallbacks->dwReserved5 == 0);
+ RTEST(puD3dCallbacks->dwReserved6 == 0);
+ RTEST(puD3dCallbacks->dwReserved7 == 0);
+ RTEST(puD3dCallbacks->dwReserved8 == 0);
+ RTEST(puD3dCallbacks->dwReserved9 == 0);
+
+ /* how detect puD3dCallbacks->ContextCreate and puD3dCallbacks->ContextDestroy shall be set for bugi drv like nivda ? */
+ /* pointer direcly to the graphic drv, it is kmode pointer */
+ // RTEST( ( (DWORD)puD3dCallbacks->ContextCreate & (~0x80000000)) != 0 );
+ // RTEST( ( (DWORD)puD3dCallbacks->ContextDestroy & (~0x80000000)) != 0 );
+
+ RTEST(puD3dDriverData == NULL);
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* We do not retesting DD_HALINFO, instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* Backup D3DNTHAL_CALLBACKS so we do not need resting it */
+ RtlCopyMemory(&oldD3dCallbacks, &D3dCallbacks, sizeof(D3DNTHAL_CALLBACKS));
+
+
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+ puD3dDriverData = &D3dDriverData;
+
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ RTEST(puD3dDriverData != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dBufferCallbacks == NULL);
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* We retesting pCallBackFlags */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* We do not retesting instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
+
+ /* start test of puD3dDriverData */
+
+ RTEST(puD3dDriverData->dwSize == sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+ RTEST(puD3dDriverData->hwCaps.dwSize == sizeof(D3DNTHALDEVICEDESC_V1));
+ RTEST(puD3dDriverData->hwCaps.dtcTransformCaps.dwSize == sizeof(D3DTRANSFORMCAPS));
+ RTEST(puD3dDriverData->hwCaps.dlcLightingCaps.dwSize == sizeof(D3DLIGHTINGCAPS));
+ RTEST(puD3dDriverData->hwCaps.dpcLineCaps.dwSize == sizeof(D3DPRIMCAPS));
+ RTEST(puD3dDriverData->hwCaps.dpcTriCaps.dwSize == sizeof(D3DPRIMCAPS));
+ RTEST(puD3dDriverData->hwCaps.dwMaxBufferSize == 0);
+ RTEST(puD3dDriverData->hwCaps.dwMaxVertexCount == 0);
+
+ /* Backup D3DHAL_GLOBALDRIVERDATA so we do not need resting it */
+ RtlCopyMemory(&oldD3dDriverData, &D3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+ puD3dDriverData = &D3dDriverData;
+ puD3dBufferCallbacks = &D3dBufferCallbacks;
+
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+ RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+ RTEST(pHalInfo != NULL);
+ RTEST(pCallBackFlags != NULL);
+
+ if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )
+ {
+ RTEST(puD3dCallbacks != NULL);
+ RTEST(puD3dDriverData != NULL);
+ RTEST(puD3dBufferCallbacks != NULL);
+ }
+
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ RTEST(puD3dDriverData != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dBufferCallbacks != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dTextureFormats == NULL);
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* We retesting the flags */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* We do not retesting instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
+
+ /* start test of puD3dBufferCallbacks */
+ RTEST(puD3dBufferCallbacks->dwSize == sizeof(DD_D3DBUFCALLBACKS));
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CANCREATED3DBUF)
+ {
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+ RTEST( ( (DWORD)puD3dBufferCallbacks->CanCreateD3DBuffer & (~0x80000000)) != 0 );
+ }
+ else
+ {
+ RTEST( puD3dBufferCallbacks->CanCreateD3DBuffer == NULL);
+ }
+
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CREATED3DBUF)
+ {
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+ RTEST( ( (DWORD)puD3dBufferCallbacks->CreateD3DBuffer & (~0x80000000)) != 0 );
+ }
+ else
+ {
+ RTEST( puD3dBufferCallbacks->CreateD3DBuffer == NULL);
+ }
+
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_DESTROYD3DBUF)
+ {
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+ RTEST( ( (DWORD)puD3dBufferCallbacks->DestroyD3DBuffer & (~0x80000000)) != 0 );
+ }
+ else
+ {
+ RTEST( puD3dBufferCallbacks->DestroyD3DBuffer == NULL);
+ }
+
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_LOCKD3DBUF)
+ {
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+ RTEST( ( (DWORD)puD3dBufferCallbacks->LockD3DBuffer & (~0x80000000)) != 0 );
+ }
+ else
+ {
+ RTEST( puD3dBufferCallbacks->LockD3DBuffer == NULL);
+ }
+
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_UNLOCKD3DBUF)
+ {
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/
+ RTEST( ( (DWORD)puD3dBufferCallbacks->UnlockD3DBuffer & (~0x80000000)) != 0 );
+ }
+ else
+ {
+ RTEST( puD3dBufferCallbacks->UnlockD3DBuffer == NULL);
+ }
+
+ /* Backup DD_D3DBUFCALLBACKS so we do not need resting it */
+ RtlCopyMemory(&oldD3dBufferCallbacks, &D3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS));
+
+
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+ puD3dDriverData = &D3dDriverData;
+ puD3dBufferCallbacks = &D3dBufferCallbacks;
+
+ /* It is forbein to return a DDSURFACEDESC2 it should always be DDSURFACEDESC
+ This is only for detected bad drivers that does not follow the rules, if they
+ does not follow tthe rules, not everthing being copy then in gdi32.dll
+ gdi32.dll always assume it is DDSURFACEDESC size
+ */
+ if (puD3dDriverData->dwNumTextureFormats != 0)
+ {
+ puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
+ }
+
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+ RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+ RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ RTEST(puD3dDriverData != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dBufferCallbacks != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dTextureFormats != NULL);
+ ASSERT(puD3dTextureFormats != NULL);
+
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+ RTEST(puNumHeaps == NULL);
+ RTEST(puvmList == NULL);
+
+ /* We retesting the flags */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* We do not retesting instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
+
+ /* start test of dwNumTextureFormats */
+ if (puD3dDriverData->dwNumTextureFormats != 0)
+ {
+ myDesc = puD3dTextureFormats;
+ for (dwTextureCounter=0;dwTextureCounterdwNumTextureFormats;dwTextureCounter++)
+ {
+ RTEST(myDesc->dwSize == sizeof(DDSURFACEDESC))
+ ASSERT(myDesc->dwSize == sizeof(DDSURFACEDESC));
+
+ RTEST( (myDesc->dwFlags & (~(DDSD_CAPS|DDSD_PIXELFORMAT))) == 0);
+ RTEST(myDesc->dwHeight == 0);
+ RTEST(myDesc->dwWidth == 0);
+ RTEST(myDesc->dwLinearSize == 0);
+ RTEST(myDesc->dwBackBufferCount == 0);
+ RTEST(myDesc->dwZBufferBitDepth == 0);
+ RTEST(myDesc->dwAlphaBitDepth == 0);
+ RTEST(myDesc->dwReserved == 0);
+ RTEST(myDesc->lpSurface == 0);
+ RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceLowValue == 0);
+ RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceHighValue == 0);
+ RTEST(myDesc->ddckCKDestBlt.dwColorSpaceLowValue == 0);
+ RTEST(myDesc->ddckCKDestBlt.dwColorSpaceHighValue == 0);
+ RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceLowValue == 0);
+ RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceHighValue == 0);
+ RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceLowValue == 0);
+ RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceHighValue == 0);
+ RTEST(myDesc->ddpfPixelFormat.dwSize == sizeof(DDPIXELFORMAT));
+ RTEST(myDesc->ddpfPixelFormat.dwFlags != 0);
+ if (myDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)
+ {
+ RTEST(myDesc->ddpfPixelFormat.dwFourCC != 0);
+ }
+ RTEST(myDesc->ddsCaps.dwCaps == DDSCAPS_TEXTURE);
+
+ myDesc = (DDSURFACEDESC *) (((DWORD) myDesc) + sizeof(DDSURFACEDESC));
+ }
+ }
+
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, NULL, */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+ puD3dDriverData = &D3dDriverData;
+ puD3dBufferCallbacks = &D3dBufferCallbacks;
+ puNumHeaps = &NumHeaps;
+
+ if (puD3dDriverData->dwNumTextureFormats != 0)
+ {
+ RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
+ }
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+ RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+ RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ RTEST(puD3dDriverData != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dBufferCallbacks != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dTextureFormats != NULL);
+ ASSERT(puD3dTextureFormats != NULL);
+
+ RTEST(puNumHeaps != NULL);
+ ASSERT(puNumHeaps != NULL);
+ RTEST(NumHeaps == 0);
+
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+
+ RTEST(puvmList == NULL);
+
+ /* We retesting the flags */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* We do not retesting instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
+ /* we skip resting texture */
+
+
+ /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, puvmList, NULL, */
+ pHalInfo = &HalInfo;
+ pCallBackFlags = CallBackFlags;
+ puD3dCallbacks = &D3dCallbacks;
+ puD3dDriverData = &D3dDriverData;
+ puD3dBufferCallbacks = &D3dBufferCallbacks;
+ puNumHeaps = &NumHeaps;
+ puvmList = &vmList;
+
+ if (puD3dDriverData->dwNumTextureFormats != 0)
+ {
+ RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
+ }
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+ RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
+ RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));
+
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
+ pCallBackFlags, puD3dCallbacks,
+ puD3dDriverData, puD3dBufferCallbacks,
+ puD3dTextureFormats, puNumHeaps,
+ puvmList, puNumFourCC,
+ puFourCC)== FALSE);
+
+ RTEST(pHalInfo != NULL);
+ ASSERT(pHalInfo != NULL);
+
+ RTEST(pCallBackFlags != NULL);
+ ASSERT(pCallBackFlags != NULL);
+
+ RTEST(puD3dCallbacks != NULL);
+ ASSERT(puD3dCallbacks != NULL);
+
+ RTEST(puD3dDriverData != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dBufferCallbacks != NULL);
+ ASSERT(puD3dDriverData != NULL);
+
+ RTEST(puD3dTextureFormats != NULL);
+ ASSERT(puD3dTextureFormats != NULL);
+
+ RTEST(puNumHeaps != NULL);
+ ASSERT(puNumHeaps != NULL);
+ RTEST(NumHeaps == 0);
+
+ RTEST(puvmList != NULL);
+
+ RTEST(puNumFourCC == NULL);
+ RTEST(puFourCC == NULL);
+
+
+
+ /* We retesting the flags */
+ RTEST(pCallBackFlags[0] != 0);
+ RTEST(pCallBackFlags[1] != 0);
+ RTEST(pCallBackFlags[2] == 0);
+
+ /* We do not retesting instead we compare it */
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);
+ /* we skip resting texture */
+
+ /* Todo
+ * adding test for
+ * puNumFourCC
+ * puFourCC
+ */
+
+ /* Cleanup ReactX setup */
+ DeleteDC(hdc);
+ Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c b/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
index ce7ba5bbc93..81c0bde21aa 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
@@ -1,36 +1,36 @@
-INT
-Test_NtGdiArcInternal(PTESTINFO pti)
-{
- HDC hDC = CreateDCW(L"Display",NULL,NULL,NULL);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiArcInternal(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
- TEST(NtGdiArcInternal(1, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
- TEST(NtGdiArcInternal(2, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
- TEST(NtGdiArcInternal(3, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiArcInternal(4, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiArcInternal(4, (HDC)10, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
- TEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiArcInternal(0, hDC, 10, 10, 0, 0, 0, 0, 0, 0) == TRUE);
- TEST(NtGdiArcInternal(0, hDC, 10, 10, -10, -10, 0, 0, 0, 0) == TRUE);
- TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 10, 0, -10, 0) == TRUE);
-
-// was passiert, wenn left > right ? einfach tauschen?
-
-
- DeleteDC(hDC);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_NtGdiArcInternal(PTESTINFO pti)
+{
+ HDC hDC = CreateDCW(L"Display",NULL,NULL,NULL);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiArcInternal(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
+ TEST(NtGdiArcInternal(1, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
+ TEST(NtGdiArcInternal(2, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
+ TEST(NtGdiArcInternal(3, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == TRUE);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiArcInternal(4, hDC, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiArcInternal(4, (HDC)10, 0, 0, 0, 0, 0, 0, 0, 0) == FALSE);
+ TEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiArcInternal(0, hDC, 10, 10, 0, 0, 0, 0, 0, 0) == TRUE);
+ TEST(NtGdiArcInternal(0, hDC, 10, 10, -10, -10, 0, 0, 0, 0) == TRUE);
+ TEST(NtGdiArcInternal(0, hDC, 0, 0, 0, 0, 10, 0, -10, 0) == TRUE);
+
+// was passiert, wenn left > right ? einfach tauschen?
+
+
+ DeleteDC(hDC);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiCreateBitmap.c b/rostests/apitests/w32knapi/ntgdi/NtGdiCreateBitmap.c
index 5f8d92374c7..6018855ffca 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiCreateBitmap.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiCreateBitmap.c
@@ -1,196 +1,196 @@
-INT
-Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
-{
- HBITMAP hBmp;
- BITMAP bitmap;
- BYTE BitmapData[10] = {0x11, 0x22, 0x33};
-
- /* Test simple params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, NULL)) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hBmp);
-
- /* Test all zero */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(0, 0, 0, 0, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test cx == 0 */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(0, 1, 1, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test negative cx */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(-10, 1, 1, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test cy == 0 */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(1, 0, 1, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test negative cy */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(1, -2, 1, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test negative cy */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(1, -2, 1, 1, BitmapData) == NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test huge size */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(100000, 100000, 1, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_NOT_ENOUGH_MEMORY);
-
- /* Test cPlanes == 0 */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 0, 1, NULL)) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmType == 0);
- TEST(bitmap.bmWidth == 1);
- TEST(bitmap.bmHeight == 1);
- TEST(bitmap.bmWidthBytes == 2);
- TEST(bitmap.bmPlanes == 1);
- TEST(bitmap.bmBitsPixel == 1);
- DeleteObject(hBmp);
-
- /* Test big cPlanes */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 32, 1, NULL)) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hBmp);
-
- TEST(NtGdiCreateBitmap(1, 1, 33, 1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test cBPP == 0 */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 0, NULL)) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmType == 0);
- TEST(bitmap.bmWidth == 1);
- TEST(bitmap.bmHeight == 1);
- TEST(bitmap.bmWidthBytes == 2);
- TEST(bitmap.bmPlanes == 1);
- TEST(bitmap.bmBitsPixel == 1);
- DeleteObject(hBmp);
-
- /* Test negative cBPP */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(1, 1, 1, -1, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test bad cBPP */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 3, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 4);
- DeleteObject(hBmp);
-
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 6, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 8);
- DeleteObject(hBmp);
-
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 15, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 16);
- DeleteObject(hBmp);
-
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 17, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 24);
- DeleteObject(hBmp);
-
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 3, 7, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 24);
- DeleteObject(hBmp);
-
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 25, NULL)) != NULL);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmBitsPixel == 32);
- DeleteObject(hBmp);
-
- TEST(GetLastError() == ERROR_SUCCESS);
-
- TEST(NtGdiCreateBitmap(1, 1, 1, 33, NULL) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test bad pointer */
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiCreateBitmap(1, 1, 1, 1, (BYTE*)0x80001234) == NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test pointer alignment */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, &BitmapData[1])) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- DeleteObject(hBmp);
-
- /* Test normal params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(5, 7, 2, 4, NULL)) != NULL);
- TEST(GetLastError() == ERROR_SUCCESS);
- ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
- TEST(bitmap.bmType == 0);
- TEST(bitmap.bmWidth == 5);
- TEST(bitmap.bmHeight == 7);
- TEST(bitmap.bmWidthBytes == 6);
- TEST(bitmap.bmPlanes == 1);
- TEST(bitmap.bmBitsPixel == 8);
- DeleteObject(hBmp);
-
-
- /* Test height 0 params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, 0, 1, 1, NULL)) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test height -1 params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(1, -1, 1, 1, NULL)) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test witdth 0 params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(0, 1, 1, 1, NULL)) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
- /* Test witdth -1 params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(-1, 0, 1, 1, NULL)) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
-
- /* Test witdth -1 params */
- SetLastError(ERROR_SUCCESS);
- TEST((hBmp = NtGdiCreateBitmap(0, 0, 1, 1, NULL)) == NULL);
- TEST(GetLastError() == ERROR_INVALID_PARAMETER);
-
-
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiCreateBitmap(PTESTINFO pti)
-{
- INT ret;
-
- ret = Test_NtGdiCreateBitmap_Params(pti);
- if (ret != APISTATUS_NORMAL)
- return ret;
-
-// ret = Test_NtGdiCreateBitmap_Pixel(pti);
-// if (ret != APISTATUS_NORMAL)
-// return ret;
-
- return APISTATUS_NORMAL;
-
-}
+INT
+Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
+{
+ HBITMAP hBmp;
+ BITMAP bitmap;
+ BYTE BitmapData[10] = {0x11, 0x22, 0x33};
+
+ /* Test simple params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, NULL)) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hBmp);
+
+ /* Test all zero */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(0, 0, 0, 0, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test cx == 0 */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(0, 1, 1, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test negative cx */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(-10, 1, 1, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test cy == 0 */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(1, 0, 1, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test negative cy */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(1, -2, 1, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test negative cy */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(1, -2, 1, 1, BitmapData) == NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test huge size */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(100000, 100000, 1, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_NOT_ENOUGH_MEMORY);
+
+ /* Test cPlanes == 0 */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 0, 1, NULL)) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmType == 0);
+ TEST(bitmap.bmWidth == 1);
+ TEST(bitmap.bmHeight == 1);
+ TEST(bitmap.bmWidthBytes == 2);
+ TEST(bitmap.bmPlanes == 1);
+ TEST(bitmap.bmBitsPixel == 1);
+ DeleteObject(hBmp);
+
+ /* Test big cPlanes */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 32, 1, NULL)) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hBmp);
+
+ TEST(NtGdiCreateBitmap(1, 1, 33, 1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test cBPP == 0 */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 0, NULL)) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmType == 0);
+ TEST(bitmap.bmWidth == 1);
+ TEST(bitmap.bmHeight == 1);
+ TEST(bitmap.bmWidthBytes == 2);
+ TEST(bitmap.bmPlanes == 1);
+ TEST(bitmap.bmBitsPixel == 1);
+ DeleteObject(hBmp);
+
+ /* Test negative cBPP */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(1, 1, 1, -1, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test bad cBPP */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 3, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 4);
+ DeleteObject(hBmp);
+
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 6, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 8);
+ DeleteObject(hBmp);
+
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 15, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 16);
+ DeleteObject(hBmp);
+
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 17, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 24);
+ DeleteObject(hBmp);
+
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 3, 7, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 24);
+ DeleteObject(hBmp);
+
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 25, NULL)) != NULL);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmBitsPixel == 32);
+ DeleteObject(hBmp);
+
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ TEST(NtGdiCreateBitmap(1, 1, 1, 33, NULL) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test bad pointer */
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiCreateBitmap(1, 1, 1, 1, (BYTE*)0x80001234) == NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test pointer alignment */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, &BitmapData[1])) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ DeleteObject(hBmp);
+
+ /* Test normal params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(5, 7, 2, 4, NULL)) != NULL);
+ TEST(GetLastError() == ERROR_SUCCESS);
+ ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
+ TEST(bitmap.bmType == 0);
+ TEST(bitmap.bmWidth == 5);
+ TEST(bitmap.bmHeight == 7);
+ TEST(bitmap.bmWidthBytes == 6);
+ TEST(bitmap.bmPlanes == 1);
+ TEST(bitmap.bmBitsPixel == 8);
+ DeleteObject(hBmp);
+
+
+ /* Test height 0 params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, 0, 1, 1, NULL)) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test height -1 params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(1, -1, 1, 1, NULL)) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test witdth 0 params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(0, 1, 1, 1, NULL)) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+ /* Test witdth -1 params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(-1, 0, 1, 1, NULL)) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+
+ /* Test witdth -1 params */
+ SetLastError(ERROR_SUCCESS);
+ TEST((hBmp = NtGdiCreateBitmap(0, 0, 1, 1, NULL)) == NULL);
+ TEST(GetLastError() == ERROR_INVALID_PARAMETER);
+
+
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiCreateBitmap(PTESTINFO pti)
+{
+ INT ret;
+
+ ret = Test_NtGdiCreateBitmap_Params(pti);
+ if (ret != APISTATUS_NORMAL)
+ return ret;
+
+// ret = Test_NtGdiCreateBitmap_Pixel(pti);
+// if (ret != APISTATUS_NORMAL)
+// return ret;
+
+ return APISTATUS_NORMAL;
+
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiCreateCompatibleBitmap.c b/rostests/apitests/w32knapi/ntgdi/NtGdiCreateCompatibleBitmap.c
index 045c12fef43..a7315c97a20 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiCreateCompatibleBitmap.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiCreateCompatibleBitmap.c
@@ -1,6 +1,6 @@
-
-INT
-Test_NtGdiCreateCompatibleBitmap(PTESTINFO pti)
-{
- return APISTATUS_NORMAL;
-}
+
+INT
+Test_NtGdiCreateCompatibleBitmap(PTESTINFO pti)
+{
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c b/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
index 6331d719e21..a172554b9c1 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
@@ -1,247 +1,247 @@
-HPALETTE
-CreateTestPalette()
-{
- struct
- {
- LOGPALETTE logpal;
- PALETTEENTRY entry[5];
- } palstruct =
- { {0x300,5,
- { {1,2,3,0} }},
- { {22,33,44,PC_RESERVED},
- {11,55,77,PC_EXPLICIT},
- {00,77,66,PC_RESERVED | PC_NOCOLLAPSE},
- {12,34,56,78}} };
-
- return CreatePalette((LOGPALETTE*)&palstruct);
-}
-
-INT
-Test_NtGdiDoPalette_GdiPalAnimate(PTESTINFO pti)
-{
- HPALETTE hPal;
- PALETTEENTRY palEntries[5] = {
- {0,0,0,0},
- {0xff,0xff,0xff,0},
- {0x33,0x66,0x99,0},
- {0x25,0x84,0x14,0},
- {0x12,0x34,0x56,0x11}};
- PALETTEENTRY palEntries2[5];
-
- /* Test stock palette */
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalAnimate, FALSE) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
-
- /* Test pEntries = NULL */
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, TRUE) == 0);
- RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, FALSE) == 0);
- DeleteObject(hPal);
-
- /* Test PC_RESERVED */
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE) == 2);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 1, 5, palEntries, GdiPalAnimate, TRUE) == 2);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 2, 5, palEntries, GdiPalAnimate, TRUE) == 1);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, TRUE) == 1);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 4, 5, palEntries, GdiPalAnimate, TRUE) == 0);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 5, 5, palEntries, GdiPalAnimate, TRUE) == 0);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, FALSE) == 2);
- DeleteObject(hPal);
-
- hPal = CreateTestPalette();
- RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, FALSE) == 1);
- DeleteObject(hPal);
-
- /* Test if entries are set correctly */
- hPal = CreateTestPalette();
- NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE);
- NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
- RTEST(palEntries2[0].peRed == 1);
- RTEST(palEntries2[0].peGreen == 2);
- RTEST(palEntries2[0].peBlue == 3);
- RTEST(palEntries2[0].peFlags == 0);
- RTEST(palEntries2[1].peRed == palEntries[1].peRed);
- RTEST(palEntries2[1].peGreen == palEntries[1].peGreen);
- RTEST(palEntries2[1].peBlue == palEntries[1].peBlue);
- RTEST(palEntries2[1].peFlags == palEntries[1].peFlags);
- RTEST(palEntries2[2].peRed == 11);
- RTEST(palEntries2[2].peGreen == 55);
- RTEST(palEntries2[2].peBlue == 77);
- TEST(palEntries2[2].peFlags == PC_EXPLICIT);
- RTEST(palEntries2[3].peRed == palEntries[3].peRed);
- RTEST(palEntries2[3].peGreen == palEntries[3].peGreen);
- RTEST(palEntries2[3].peBlue == palEntries[3].peBlue);
- RTEST(palEntries2[3].peFlags == palEntries[3].peFlags);
- DeleteObject(hPal);
-
-
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiDoPalette_GdiPalSetEntries(PTESTINFO pti)
-{
- HPALETTE hPal;
- PALETTEENTRY palEntries[5] = {
- {0,0,0,0},
- {0xff,0xff,0xff,0},
- {0x33,0x66,0x99,0},
- {0x25,0x84,0x14,0},
- {0x12,0x34,0x56,0x11}};
- PALETTEENTRY palEntries2[5];
-
- hPal = CreateTestPalette();
-
- /* Test invalid handle */
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiDoPalette((HPALETTE)23, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test system palette */
- RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- RTEST(NtGdiDoPalette(hPal, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 1);
- RTEST(NtGdiDoPalette(hPal, 0, 2, palEntries, GdiPalSetEntries, TRUE) == 2);
- RTEST(NtGdiDoPalette(hPal, 0, 3, palEntries, GdiPalSetEntries, TRUE) == 3);
- RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE) == 5);
- RTEST(NtGdiDoPalette(hPal, 0, 6, palEntries, GdiPalSetEntries, TRUE) == 5);
- RTEST(NtGdiDoPalette(hPal, 3, 6, palEntries, GdiPalSetEntries, TRUE) == 2);
-// TEST(NtGdiDoPalette(hPal, 4, 23247, palEntries, GdiPalSetEntries, TRUE) == 0);
-
- /* Test bInbound == FALSE */
- NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
- ZeroMemory(palEntries2, sizeof(palEntries2));
- RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalSetEntries, FALSE) == 5);
- /* we should get the old values returned in our buffer! */
- TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
-
- /* check what we have in our palette now */
- ZeroMemory(palEntries2, sizeof(palEntries2));
- RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE) == 5);
- TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
-
- RTEST(NtGdiDoPalette(hPal, 0, 4, palEntries2, GdiPalSetEntries, TRUE) == 4);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test if entries are set correctly */
- hPal = CreateTestPalette();
- NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
- NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
- RTEST(palEntries2[0].peRed == 0);
- RTEST(palEntries2[0].peGreen == 0);
- RTEST(palEntries2[0].peBlue == 0);
- RTEST(palEntries2[0].peFlags == 0);
-
- /* Test that the buffer was not changed */
-
- /* Test pEntries = NULL */
- RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
-
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiDoPalette_GdiPalGetEntries(PTESTINFO pti)
-{
- HPALETTE hPal;
-
- hPal = CreateTestPalette();
-
- /* Test pEntries = NULL */
- RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
- RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, FALSE) == 5);
- RTEST(NtGdiDoPalette(hPal, 2, 1, NULL, GdiPalGetEntries, FALSE) == 5);
- RTEST(NtGdiDoPalette(hPal, 20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
- RTEST(NtGdiDoPalette(hPal, -20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
- RTEST(NtGdiDoPalette(hPal, 2, 0, NULL, GdiPalGetEntries, FALSE) == 5);
-
-
-// Test flags 0xf0
-
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiDoPalette_GetSystemPalette(PTESTINFO pti)
-{
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiDoPalette_GetBIBColorTable(PTESTINFO pti)
-{
- return APISTATUS_NORMAL;
-}
-
-INT
-Test_NtGdiDoPalette_SetDIBColorTable(PTESTINFO pti)
-{
- return APISTATUS_NORMAL;
-}
-
-
-INT
-Test_NtGdiDoPalette(PTESTINFO pti)
-{
- INT ret;
-
- ret = Test_NtGdiDoPalette_GdiPalAnimate(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- ret = Test_NtGdiDoPalette_GdiPalSetEntries(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- ret = Test_NtGdiDoPalette_GdiPalGetEntries(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- ret = Test_NtGdiDoPalette_GetSystemPalette(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- ret = Test_NtGdiDoPalette_GetBIBColorTable(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- ret = Test_NtGdiDoPalette_SetDIBColorTable(pti);
- if (ret != APISTATUS_NORMAL)
- {
- return ret;
- }
-
- return APISTATUS_NORMAL;
-}
+HPALETTE
+CreateTestPalette()
+{
+ struct
+ {
+ LOGPALETTE logpal;
+ PALETTEENTRY entry[5];
+ } palstruct =
+ { {0x300,5,
+ { {1,2,3,0} }},
+ { {22,33,44,PC_RESERVED},
+ {11,55,77,PC_EXPLICIT},
+ {00,77,66,PC_RESERVED | PC_NOCOLLAPSE},
+ {12,34,56,78}} };
+
+ return CreatePalette((LOGPALETTE*)&palstruct);
+}
+
+INT
+Test_NtGdiDoPalette_GdiPalAnimate(PTESTINFO pti)
+{
+ HPALETTE hPal;
+ PALETTEENTRY palEntries[5] = {
+ {0,0,0,0},
+ {0xff,0xff,0xff,0},
+ {0x33,0x66,0x99,0},
+ {0x25,0x84,0x14,0},
+ {0x12,0x34,0x56,0x11}};
+ PALETTEENTRY palEntries2[5];
+
+ /* Test stock palette */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalAnimate, FALSE) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+
+ /* Test pEntries = NULL */
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, TRUE) == 0);
+ RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, FALSE) == 0);
+ DeleteObject(hPal);
+
+ /* Test PC_RESERVED */
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE) == 2);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 1, 5, palEntries, GdiPalAnimate, TRUE) == 2);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 2, 5, palEntries, GdiPalAnimate, TRUE) == 1);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, TRUE) == 1);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 4, 5, palEntries, GdiPalAnimate, TRUE) == 0);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 5, 5, palEntries, GdiPalAnimate, TRUE) == 0);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, FALSE) == 2);
+ DeleteObject(hPal);
+
+ hPal = CreateTestPalette();
+ RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, FALSE) == 1);
+ DeleteObject(hPal);
+
+ /* Test if entries are set correctly */
+ hPal = CreateTestPalette();
+ NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE);
+ NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
+ RTEST(palEntries2[0].peRed == 1);
+ RTEST(palEntries2[0].peGreen == 2);
+ RTEST(palEntries2[0].peBlue == 3);
+ RTEST(palEntries2[0].peFlags == 0);
+ RTEST(palEntries2[1].peRed == palEntries[1].peRed);
+ RTEST(palEntries2[1].peGreen == palEntries[1].peGreen);
+ RTEST(palEntries2[1].peBlue == palEntries[1].peBlue);
+ RTEST(palEntries2[1].peFlags == palEntries[1].peFlags);
+ RTEST(palEntries2[2].peRed == 11);
+ RTEST(palEntries2[2].peGreen == 55);
+ RTEST(palEntries2[2].peBlue == 77);
+ TEST(palEntries2[2].peFlags == PC_EXPLICIT);
+ RTEST(palEntries2[3].peRed == palEntries[3].peRed);
+ RTEST(palEntries2[3].peGreen == palEntries[3].peGreen);
+ RTEST(palEntries2[3].peBlue == palEntries[3].peBlue);
+ RTEST(palEntries2[3].peFlags == palEntries[3].peFlags);
+ DeleteObject(hPal);
+
+
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiDoPalette_GdiPalSetEntries(PTESTINFO pti)
+{
+ HPALETTE hPal;
+ PALETTEENTRY palEntries[5] = {
+ {0,0,0,0},
+ {0xff,0xff,0xff,0},
+ {0x33,0x66,0x99,0},
+ {0x25,0x84,0x14,0},
+ {0x12,0x34,0x56,0x11}};
+ PALETTEENTRY palEntries2[5];
+
+ hPal = CreateTestPalette();
+
+ /* Test invalid handle */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiDoPalette((HPALETTE)23, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test system palette */
+ RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ RTEST(NtGdiDoPalette(hPal, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 1);
+ RTEST(NtGdiDoPalette(hPal, 0, 2, palEntries, GdiPalSetEntries, TRUE) == 2);
+ RTEST(NtGdiDoPalette(hPal, 0, 3, palEntries, GdiPalSetEntries, TRUE) == 3);
+ RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE) == 5);
+ RTEST(NtGdiDoPalette(hPal, 0, 6, palEntries, GdiPalSetEntries, TRUE) == 5);
+ RTEST(NtGdiDoPalette(hPal, 3, 6, palEntries, GdiPalSetEntries, TRUE) == 2);
+// TEST(NtGdiDoPalette(hPal, 4, 23247, palEntries, GdiPalSetEntries, TRUE) == 0);
+
+ /* Test bInbound == FALSE */
+ NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
+ ZeroMemory(palEntries2, sizeof(palEntries2));
+ RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalSetEntries, FALSE) == 5);
+ /* we should get the old values returned in our buffer! */
+ TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
+
+ /* check what we have in our palette now */
+ ZeroMemory(palEntries2, sizeof(palEntries2));
+ RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE) == 5);
+ TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
+
+ RTEST(NtGdiDoPalette(hPal, 0, 4, palEntries2, GdiPalSetEntries, TRUE) == 4);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test if entries are set correctly */
+ hPal = CreateTestPalette();
+ NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
+ NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
+ RTEST(palEntries2[0].peRed == 0);
+ RTEST(palEntries2[0].peGreen == 0);
+ RTEST(palEntries2[0].peBlue == 0);
+ RTEST(palEntries2[0].peFlags == 0);
+
+ /* Test that the buffer was not changed */
+
+ /* Test pEntries = NULL */
+ RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
+
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiDoPalette_GdiPalGetEntries(PTESTINFO pti)
+{
+ HPALETTE hPal;
+
+ hPal = CreateTestPalette();
+
+ /* Test pEntries = NULL */
+ RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
+ RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, FALSE) == 5);
+ RTEST(NtGdiDoPalette(hPal, 2, 1, NULL, GdiPalGetEntries, FALSE) == 5);
+ RTEST(NtGdiDoPalette(hPal, 20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
+ RTEST(NtGdiDoPalette(hPal, -20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
+ RTEST(NtGdiDoPalette(hPal, 2, 0, NULL, GdiPalGetEntries, FALSE) == 5);
+
+
+// Test flags 0xf0
+
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiDoPalette_GetSystemPalette(PTESTINFO pti)
+{
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiDoPalette_GetBIBColorTable(PTESTINFO pti)
+{
+ return APISTATUS_NORMAL;
+}
+
+INT
+Test_NtGdiDoPalette_SetDIBColorTable(PTESTINFO pti)
+{
+ return APISTATUS_NORMAL;
+}
+
+
+INT
+Test_NtGdiDoPalette(PTESTINFO pti)
+{
+ INT ret;
+
+ ret = Test_NtGdiDoPalette_GdiPalAnimate(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ ret = Test_NtGdiDoPalette_GdiPalSetEntries(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ ret = Test_NtGdiDoPalette_GdiPalGetEntries(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ ret = Test_NtGdiDoPalette_GetSystemPalette(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ ret = Test_NtGdiDoPalette_GetBIBColorTable(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ ret = Test_NtGdiDoPalette_SetDIBColorTable(pti);
+ if (ret != APISTATUS_NORMAL)
+ {
+ return ret;
+ }
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiEngCreatePalette.c b/rostests/apitests/w32knapi/ntgdi/NtGdiEngCreatePalette.c
index 52ebe973820..5e2183cdbfa 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiEngCreatePalette.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiEngCreatePalette.c
@@ -1,20 +1,20 @@
-
-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 == GetCurrentProcessId());
- TEST(pEntry->UserData == 0);
- TEST(pEntry->Type == (((UINT)hPal >> 16) | GDI_OBJECT_TYPE_PALETTE));
-
- return APISTATUS_NORMAL;
-}
+
+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 == GetCurrentProcessId());
+ TEST(pEntry->UserData == 0);
+ TEST(pEntry->Type == (((UINT)hPal >> 16) | GDI_OBJECT_TYPE_PALETTE));
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiEnumFontOpen.c b/rostests/apitests/w32knapi/ntgdi/NtGdiEnumFontOpen.c
index 3ef0d01134e..c95749348bd 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiEnumFontOpen.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiEnumFontOpen.c
@@ -1,36 +1,36 @@
-
-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 == 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);
-
- NtGdiEnumFontClose(idEnum);
-
- // Test no logfont (NULL): should word
- // Test empty lfFaceName string: should not work
-
-
- return APISTATUS_NORMAL;
-}
-
+
+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 == 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);
+
+ NtGdiEnumFontClose(idEnum);
+
+ // Test no logfont (NULL): should word
+ // Test empty lfFaceName string: should not work
+
+
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c b/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
index 09cb3dc7e54..06c2b08f1d5 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
@@ -1,62 +1,62 @@
-INT
-Test_NtGdiGetBitmapBits(PTESTINFO pti)
-{
- BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
- HBITMAP hBitmap;
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetBitmapBits(0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- /* Test NULL bitmap handle */
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetBitmapBits(0, 5, Bits) == 0);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- /* Test invalid bitmap handle */
- hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 0);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
- DeleteObject(hBitmap);
-
- hBitmap = CreateBitmap(3, 3, 1, 8, NULL);
- SetLastError(ERROR_SUCCESS);
-
- /* test NULL pointer and count buffer size != 0 */
- RTEST(NtGdiGetBitmapBits(hBitmap, 5, NULL) == 12);
-
- /* test NULL pointer and buffer size == 0*/
- RTEST(NtGdiGetBitmapBits(hBitmap, 0, NULL) == 12);
-
- /* test bad pointer */
- RTEST(NtGdiGetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);
-
- /* Test if we can set a number of bytes between lines */
- RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 5);
-
- /* Test alignment */
- RTEST(NtGdiGetBitmapBits(hBitmap, 4, Bits+1) == 4);
-
- /* Test 1 byte too much */
- RTEST(NtGdiGetBitmapBits(hBitmap, 10, Bits) == 10);
-
- /* Test one row too much */
- RTEST(NtGdiGetBitmapBits(hBitmap, 12, Bits) == 12);
-
- RTEST(NtGdiGetBitmapBits(hBitmap, 13, Bits) == 12);
-
- RTEST(NtGdiGetBitmapBits(hBitmap, 100, Bits) == 12);
-
- /* Test huge bytes count */
- RTEST(NtGdiGetBitmapBits(hBitmap, 12345678, Bits) == 12);
-
- /* Test negative bytes count */
- RTEST(NtGdiGetBitmapBits(hBitmap, -5, Bits) == 12);
-
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- DeleteObject(hBitmap);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_NtGdiGetBitmapBits(PTESTINFO pti)
+{
+ BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
+ HBITMAP hBitmap;
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetBitmapBits(0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ /* Test NULL bitmap handle */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetBitmapBits(0, 5, Bits) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ /* Test invalid bitmap handle */
+ hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+ DeleteObject(hBitmap);
+
+ hBitmap = CreateBitmap(3, 3, 1, 8, NULL);
+ SetLastError(ERROR_SUCCESS);
+
+ /* test NULL pointer and count buffer size != 0 */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 5, NULL) == 12);
+
+ /* test NULL pointer and buffer size == 0*/
+ RTEST(NtGdiGetBitmapBits(hBitmap, 0, NULL) == 12);
+
+ /* test bad pointer */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);
+
+ /* Test if we can set a number of bytes between lines */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 5, Bits) == 5);
+
+ /* Test alignment */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 4, Bits+1) == 4);
+
+ /* Test 1 byte too much */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 10, Bits) == 10);
+
+ /* Test one row too much */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 12, Bits) == 12);
+
+ RTEST(NtGdiGetBitmapBits(hBitmap, 13, Bits) == 12);
+
+ RTEST(NtGdiGetBitmapBits(hBitmap, 100, Bits) == 12);
+
+ /* Test huge bytes count */
+ RTEST(NtGdiGetBitmapBits(hBitmap, 12345678, Bits) == 12);
+
+ /* Test negative bytes count */
+ RTEST(NtGdiGetBitmapBits(hBitmap, -5, Bits) == 12);
+
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ DeleteObject(hBitmap);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiGetDIBits.c b/rostests/apitests/w32knapi/ntgdi/NtGdiGetDIBits.c
index 3c93677703e..960b0d49fdf 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiGetDIBits.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiGetDIBits.c
@@ -1,131 +1,131 @@
-/* taken from gdi32, bitmap.c */
-UINT
-FASTCALL
-DIB_BitmapMaxBitsSize( PBITMAPINFO Info, UINT ScanLines )
-{
- UINT MaxBits = 0;
-
- if (Info->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
- {
- PBITMAPCOREHEADER Core = (PBITMAPCOREHEADER)Info;
- MaxBits = Core->bcBitCount * Core->bcPlanes * Core->bcWidth;
- }
- else /* assume BITMAPINFOHEADER */
- {
- if ((Info->bmiHeader.biCompression) && (Info->bmiHeader.biCompression != BI_BITFIELDS))
- return Info->bmiHeader.biSizeImage;
- // Planes are over looked by Yuan. I guess assumed always 1.
- MaxBits = Info->bmiHeader.biBitCount * Info->bmiHeader.biPlanes * Info->bmiHeader.biWidth;
- }
- MaxBits = ((MaxBits + 31) & ~31 ) / 8; // From Yuan, ScanLineSize = (Width * bitcount + 31)/32
- return (MaxBits * ScanLines); // ret the full Size.
-}
-
-
-INT
-Test_NtGdiGetDIBitsInternal(PTESTINFO pti)
-{
- HBITMAP hBitmap;
- struct
- {
- BITMAPINFO bi;
- RGBQUAD Colors[20];
- } bmp;
-// BITMAPINFO bi;
- INT ScreenBpp;
- BITMAPCOREINFO bic;
- DWORD data[20*16];
-
- HDC hDCScreen = GetDC(NULL);
- ASSERT(hDCScreen != NULL);
-
- hBitmap = CreateCompatibleBitmap(hDCScreen, 16, 16);
- ASSERT(hBitmap != NULL);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal(0, 0, 0, 0, NULL, NULL, 0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal((HDC)2345, 0, 0, 0, NULL, NULL, 0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal((HDC)2345, hBitmap, 0, 0, NULL, NULL, 0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 0, NULL, NULL, 0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, NULL, 0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- ZeroMemory(&bmp, sizeof(bmp));
- bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal((HDC)0, hBitmap, 0, 15, NULL, &bmp.bi, 0, 0, 0) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
- TEST(bmp.Colors[0].rgbRed == 0x44);
-
- ZeroMemory(&bmp, sizeof(bmp));
- bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal((HDC)2345, hBitmap, 0, 15, NULL, &bmp.bi, 0, 0, 0) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
- TEST(bmp.Colors[0].rgbRed == 0x44);
-
- ZeroMemory(&bmp, sizeof(bmp));
- bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, &bmp.bi, DIB_RGB_COLORS,
- DIB_BitmapMaxBitsSize(&bmp.bi, 15), 0) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- ScreenBpp = GetDeviceCaps(hDCScreen, BITSPIXEL);
-
- RTEST(bmp.bi.bmiHeader.biWidth == 16);
- RTEST(bmp.bi.bmiHeader.biHeight == 16);
- RTEST(bmp.bi.bmiHeader.biBitCount == ScreenBpp);
- RTEST(bmp.bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
-
- TEST(bmp.Colors[0].rgbRed == 0x44);
-
- /* Test with pointer */
-// ZeroMemory(&bmp.bi, sizeof(BITMAPINFO));
- bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-// FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x11223344);
-
- SetLastError(ERROR_SUCCESS);
- TEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, (void*)data, &bmp.bi, DIB_RGB_COLORS,
- DIB_BitmapMaxBitsSize(&bmp.bi, 15), 0) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- RTEST(bmp.bi.bmiHeader.biWidth == 16);
- RTEST(bmp.bi.bmiHeader.biHeight == 16);
- RTEST(bmp.bi.bmiHeader.biBitCount == ScreenBpp);
- RTEST(bmp.bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
-
- TEST(bmp.Colors[0].rgbRed != 0x44);
-
- /* Test a BITMAPCOREINFO structure */
- SetLastError(ERROR_SUCCESS);
- ZeroMemory(&bic, sizeof(BITMAPCOREINFO));
- bic.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER);
- TEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, (PBITMAPINFO)&bic, DIB_RGB_COLORS,
- DIB_BitmapMaxBitsSize((PBITMAPINFO)&bic, 15), 0) > 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
-
- ReleaseDC(NULL, hDCScreen);
- DeleteObject(hBitmap);
-
- return APISTATUS_NORMAL;
-}
+/* taken from gdi32, bitmap.c */
+UINT
+FASTCALL
+DIB_BitmapMaxBitsSize( PBITMAPINFO Info, UINT ScanLines )
+{
+ UINT MaxBits = 0;
+
+ if (Info->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
+ {
+ PBITMAPCOREHEADER Core = (PBITMAPCOREHEADER)Info;
+ MaxBits = Core->bcBitCount * Core->bcPlanes * Core->bcWidth;
+ }
+ else /* assume BITMAPINFOHEADER */
+ {
+ if ((Info->bmiHeader.biCompression) && (Info->bmiHeader.biCompression != BI_BITFIELDS))
+ return Info->bmiHeader.biSizeImage;
+ // Planes are over looked by Yuan. I guess assumed always 1.
+ MaxBits = Info->bmiHeader.biBitCount * Info->bmiHeader.biPlanes * Info->bmiHeader.biWidth;
+ }
+ MaxBits = ((MaxBits + 31) & ~31 ) / 8; // From Yuan, ScanLineSize = (Width * bitcount + 31)/32
+ return (MaxBits * ScanLines); // ret the full Size.
+}
+
+
+INT
+Test_NtGdiGetDIBitsInternal(PTESTINFO pti)
+{
+ HBITMAP hBitmap;
+ struct
+ {
+ BITMAPINFO bi;
+ RGBQUAD Colors[20];
+ } bmp;
+// BITMAPINFO bi;
+ INT ScreenBpp;
+ BITMAPCOREINFO bic;
+ DWORD data[20*16];
+
+ HDC hDCScreen = GetDC(NULL);
+ ASSERT(hDCScreen != NULL);
+
+ hBitmap = CreateCompatibleBitmap(hDCScreen, 16, 16);
+ ASSERT(hBitmap != NULL);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal(0, 0, 0, 0, NULL, NULL, 0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal((HDC)2345, 0, 0, 0, NULL, NULL, 0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal((HDC)2345, hBitmap, 0, 0, NULL, NULL, 0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 0, NULL, NULL, 0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, NULL, 0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ ZeroMemory(&bmp, sizeof(bmp));
+ bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal((HDC)0, hBitmap, 0, 15, NULL, &bmp.bi, 0, 0, 0) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ TEST(bmp.Colors[0].rgbRed == 0x44);
+
+ ZeroMemory(&bmp, sizeof(bmp));
+ bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal((HDC)2345, hBitmap, 0, 15, NULL, &bmp.bi, 0, 0, 0) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ TEST(bmp.Colors[0].rgbRed == 0x44);
+
+ ZeroMemory(&bmp, sizeof(bmp));
+ bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x44);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, &bmp.bi, DIB_RGB_COLORS,
+ DIB_BitmapMaxBitsSize(&bmp.bi, 15), 0) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ ScreenBpp = GetDeviceCaps(hDCScreen, BITSPIXEL);
+
+ RTEST(bmp.bi.bmiHeader.biWidth == 16);
+ RTEST(bmp.bi.bmiHeader.biHeight == 16);
+ RTEST(bmp.bi.bmiHeader.biBitCount == ScreenBpp);
+ RTEST(bmp.bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
+
+ TEST(bmp.Colors[0].rgbRed == 0x44);
+
+ /* Test with pointer */
+// ZeroMemory(&bmp.bi, sizeof(BITMAPINFO));
+ bmp.bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+// FillMemory(&bmp.Colors, sizeof(bmp.Colors), 0x11223344);
+
+ SetLastError(ERROR_SUCCESS);
+ TEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, (void*)data, &bmp.bi, DIB_RGB_COLORS,
+ DIB_BitmapMaxBitsSize(&bmp.bi, 15), 0) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ RTEST(bmp.bi.bmiHeader.biWidth == 16);
+ RTEST(bmp.bi.bmiHeader.biHeight == 16);
+ RTEST(bmp.bi.bmiHeader.biBitCount == ScreenBpp);
+ RTEST(bmp.bi.bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8));
+
+ TEST(bmp.Colors[0].rgbRed != 0x44);
+
+ /* Test a BITMAPCOREINFO structure */
+ SetLastError(ERROR_SUCCESS);
+ ZeroMemory(&bic, sizeof(BITMAPCOREINFO));
+ bic.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER);
+ TEST(NtGdiGetDIBitsInternal(hDCScreen, hBitmap, 0, 15, NULL, (PBITMAPINFO)&bic, DIB_RGB_COLORS,
+ DIB_BitmapMaxBitsSize((PBITMAPINFO)&bic, 15), 0) > 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+
+ ReleaseDC(NULL, hDCScreen);
+ DeleteObject(hBitmap);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiGetRandomRgn.c b/rostests/apitests/w32knapi/ntgdi/NtGdiGetRandomRgn.c
index e52fb8140ad..a666a194c07 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiGetRandomRgn.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiGetRandomRgn.c
@@ -1,80 +1,80 @@
-INT
-Test_NtGdiGetRandomRgn(PTESTINFO pti)
-{
- 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);
-// UpdateWindow(hWnd);
- hDC = GetDC(hWnd);
-
- ASSERT(hDC != NULL);
-
- hrgn = CreateRectRgn(0,0,0,0);
- hrgn2 = CreateRectRgn(3,3,10,10);
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn(0, hrgn, 0) == -1);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 1) == -1);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 10) == -1);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn((HDC)2345, (HRGN)10, 10) == -1);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn((HDC)2345, 0, 1) == -1);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn(hDC, 0, 0) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 0) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 1) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 0) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0);
- TEST(NtGdiGetRandomRgn(hDC, hrgn, 2) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 3) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 5) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 10) == 0);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, -10) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- SelectClipRgn(hDC, hrgn2);
- RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == -1);
- RTEST(GetLastError() == ERROR_SUCCESS);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1);
- RTEST(CombineRgn(hrgn, hrgn, hrgn, RGN_OR) == SIMPLEREGION);
- RTEST(CombineRgn(hrgn, hrgn, hrgn2, RGN_XOR) == NULLREGION);
-
- SetRectRgn(hrgn2,0,0,0,0);
- SelectClipRgn(hDC, hrgn2);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1);
-
- RTEST(CombineRgn(hrgn2, hrgn, hrgn2, RGN_XOR) == NULLREGION);
- RTEST(CombineRgn(hrgn2, hrgn, hrgn, RGN_OR) == NULLREGION);
-
- SelectClipRgn(hDC, NULL);
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0);
-
-
- RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1);
-
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- ReleaseDC(hWnd, hDC);
- DestroyWindow(hWnd);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_NtGdiGetRandomRgn(PTESTINFO pti)
+{
+ 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);
+// UpdateWindow(hWnd);
+ hDC = GetDC(hWnd);
+
+ ASSERT(hDC != NULL);
+
+ hrgn = CreateRectRgn(0,0,0,0);
+ hrgn2 = CreateRectRgn(3,3,10,10);
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn(0, hrgn, 0) == -1);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 1) == -1);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 10) == -1);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn((HDC)2345, (HRGN)10, 10) == -1);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn((HDC)2345, 0, 1) == -1);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn(hDC, 0, 0) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 0) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 1) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 0) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0);
+ TEST(NtGdiGetRandomRgn(hDC, hrgn, 2) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 3) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 5) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 10) == 0);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, -10) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ SelectClipRgn(hDC, hrgn2);
+ RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == -1);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1);
+ RTEST(CombineRgn(hrgn, hrgn, hrgn, RGN_OR) == SIMPLEREGION);
+ RTEST(CombineRgn(hrgn, hrgn, hrgn2, RGN_XOR) == NULLREGION);
+
+ SetRectRgn(hrgn2,0,0,0,0);
+ SelectClipRgn(hDC, hrgn2);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1);
+
+ RTEST(CombineRgn(hrgn2, hrgn, hrgn2, RGN_XOR) == NULLREGION);
+ RTEST(CombineRgn(hrgn2, hrgn, hrgn, RGN_OR) == NULLREGION);
+
+ SelectClipRgn(hDC, NULL);
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0);
+
+
+ RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1);
+
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ ReleaseDC(hWnd, hDC);
+ DestroyWindow(hWnd);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c b/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
index 153e21bc740..466cfcb2885 100644
--- a/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
+++ b/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
@@ -1,62 +1,62 @@
-INT
-Test_NtGdiSetBitmapBits(PTESTINFO pti)
-{
- BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
- HBITMAP hBitmap;
-
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiSetBitmapBits(0, 0, 0) == 0);
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- /* Test NULL bitnap handle */
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiSetBitmapBits(0, 5, Bits) == 0);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
-
- /* Test invalid bitmap handle */
- hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));
- SetLastError(ERROR_SUCCESS);
- RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 0);
- RTEST(GetLastError() == ERROR_INVALID_HANDLE);
- DeleteObject(hBitmap);
-
- hBitmap = CreateBitmap(3, 3, 1, 8, NULL);
- SetLastError(ERROR_SUCCESS);
-
- /* test NULL pointer and count buffer size != 0 */
- RTEST(NtGdiSetBitmapBits(hBitmap, 5, NULL) == 0);
-
- /* test NULL pointer and buffer size == 0*/
- RTEST(NtGdiSetBitmapBits(hBitmap, 0, NULL) == 0);
-
- /* test bad pointer */
- RTEST(NtGdiSetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);
-
- /* Test if we can set a number of bytes between lines */
- RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 5);
-
- /* Test alignment */
- RTEST(NtGdiSetBitmapBits(hBitmap, 4, Bits+1) == 4);
-
- /* Test 1 byte too much */
- RTEST(NtGdiSetBitmapBits(hBitmap, 10, Bits) == 10);
-
- /* Test one row too much */
- RTEST(NtGdiSetBitmapBits(hBitmap, 12, Bits) == 12);
-
- RTEST(NtGdiSetBitmapBits(hBitmap, 13, Bits) == 12);
-
- RTEST(NtGdiSetBitmapBits(hBitmap, 100, Bits) == 12);
-
- /* Test huge bytes count */
- TEST(NtGdiSetBitmapBits(hBitmap, 12345678, Bits) == 0);
-
- /* Test negative bytes count */
- RTEST(NtGdiSetBitmapBits(hBitmap, -5, Bits) == 0);
-
- RTEST(GetLastError() == ERROR_SUCCESS);
-
- DeleteObject(hBitmap);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_NtGdiSetBitmapBits(PTESTINFO pti)
+{
+ BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
+ HBITMAP hBitmap;
+
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiSetBitmapBits(0, 0, 0) == 0);
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ /* Test NULL bitnap handle */
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiSetBitmapBits(0, 5, Bits) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+
+ /* Test invalid bitmap handle */
+ hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3));
+ SetLastError(ERROR_SUCCESS);
+ RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 0);
+ RTEST(GetLastError() == ERROR_INVALID_HANDLE);
+ DeleteObject(hBitmap);
+
+ hBitmap = CreateBitmap(3, 3, 1, 8, NULL);
+ SetLastError(ERROR_SUCCESS);
+
+ /* test NULL pointer and count buffer size != 0 */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 5, NULL) == 0);
+
+ /* test NULL pointer and buffer size == 0*/
+ RTEST(NtGdiSetBitmapBits(hBitmap, 0, NULL) == 0);
+
+ /* test bad pointer */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 5, (PBYTE)0x500) == 0);
+
+ /* Test if we can set a number of bytes between lines */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 5, Bits) == 5);
+
+ /* Test alignment */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 4, Bits+1) == 4);
+
+ /* Test 1 byte too much */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 10, Bits) == 10);
+
+ /* Test one row too much */
+ RTEST(NtGdiSetBitmapBits(hBitmap, 12, Bits) == 12);
+
+ RTEST(NtGdiSetBitmapBits(hBitmap, 13, Bits) == 12);
+
+ RTEST(NtGdiSetBitmapBits(hBitmap, 100, Bits) == 12);
+
+ /* Test huge bytes count */
+ TEST(NtGdiSetBitmapBits(hBitmap, 12345678, Bits) == 0);
+
+ /* Test negative bytes count */
+ RTEST(NtGdiSetBitmapBits(hBitmap, -5, Bits) == 0);
+
+ RTEST(GetLastError() == ERROR_SUCCESS);
+
+ DeleteObject(hBitmap);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c b/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
index 10600a315c8..98a45a44af4 100644
--- a/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
+++ b/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
@@ -1,15 +1,15 @@
-/* First the call stub */
-DWORD STDCALL
-NtUserCountClipboardFormats(VOID)
-{
- DWORD p;
- return Syscall(L"NtUserCountClipboardFormats", 0, &p);
-}
-
-INT
-Test_NtUserCountClipboardFormats(PTESTINFO pti)
-{
- RTEST(NtUserCountClipboardFormats() < 1000);
- return APISTATUS_NORMAL;
-}
-
+/* First the call stub */
+DWORD STDCALL
+NtUserCountClipboardFormats(VOID)
+{
+ DWORD p;
+ return Syscall(L"NtUserCountClipboardFormats", 0, &p);
+}
+
+INT
+Test_NtUserCountClipboardFormats(PTESTINFO pti)
+{
+ RTEST(NtUserCountClipboardFormats() < 1000);
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/w32knapi/ntuser/NtUserFindExistingCursorIcon.c b/rostests/apitests/w32knapi/ntuser/NtUserFindExistingCursorIcon.c
index aa0ac166f19..f6ba4f9f100 100644
--- a/rostests/apitests/w32knapi/ntuser/NtUserFindExistingCursorIcon.c
+++ b/rostests/apitests/w32knapi/ntuser/NtUserFindExistingCursorIcon.c
@@ -1,7 +1,7 @@
-INT
-Test_NtUserFindExistingCursoricon(PTESTINFO pti)
-{
-
- return APISTATUS_NORMAL;
-}
-
+INT
+Test_NtUserFindExistingCursoricon(PTESTINFO pti)
+{
+
+ return APISTATUS_NORMAL;
+}
+
diff --git a/rostests/apitests/w32knapi/ntuser/NtUserRedrawWindow.c b/rostests/apitests/w32knapi/ntuser/NtUserRedrawWindow.c
index 6b288d277c3..5284e13d510 100644
--- a/rostests/apitests/w32knapi/ntuser/NtUserRedrawWindow.c
+++ b/rostests/apitests/w32knapi/ntuser/NtUserRedrawWindow.c
@@ -1,30 +1,30 @@
-INT
-Test_NtUserRedrawWindow(PTESTINFO pti)
-{
- HWND hWnd;
- RECT rect;
-
- hWnd = CreateWindowA("BUTTON",
- "Test",
- BS_PUSHBUTTON | WS_VISIBLE,
- 0,
- 0,
- 50,
- 30,
- NULL,
- NULL,
- g_hInstance,
- 0);
- ASSERT(hWnd);
-
- rect.left = 0;
- rect.top = 0;
- rect.right = 10;
- rect.bottom = 10;
-
- TEST(NtUserRedrawWindow(hWnd, &rect, NULL, RDW_VALIDATE) == TRUE);
-
- DestroyWindow(hWnd);
-
- return APISTATUS_NORMAL;
-}
+INT
+Test_NtUserRedrawWindow(PTESTINFO pti)
+{
+ HWND hWnd;
+ RECT rect;
+
+ hWnd = CreateWindowA("BUTTON",
+ "Test",
+ BS_PUSHBUTTON | WS_VISIBLE,
+ 0,
+ 0,
+ 50,
+ 30,
+ NULL,
+ NULL,
+ g_hInstance,
+ 0);
+ ASSERT(hWnd);
+
+ rect.left = 0;
+ rect.top = 0;
+ rect.right = 10;
+ rect.bottom = 10;
+
+ TEST(NtUserRedrawWindow(hWnd, &rect, NULL, RDW_VALIDATE) == TRUE);
+
+ DestroyWindow(hWnd);
+
+ return APISTATUS_NORMAL;
+}
diff --git a/rostests/apitests/w32knapi/resource.h b/rostests/apitests/w32knapi/resource.h
index 112444db17d..b4e9b8b5159 100644
--- a/rostests/apitests/w32knapi/resource.h
+++ b/rostests/apitests/w32knapi/resource.h
@@ -1,2 +1,2 @@
-
-#define IDI_ICON 1000
+
+#define IDI_ICON 1000
diff --git a/rostests/apitests/w32knapi/testlist.c b/rostests/apitests/w32knapi/testlist.c
index aff2d37a842..987f90366ec 100644
--- a/rostests/apitests/w32knapi/testlist.c
+++ b/rostests/apitests/w32knapi/testlist.c
@@ -1,102 +1,102 @@
-#include "w32knapi.h"
-
-/* include the tests */
-
-#include "ntdd/NtGdiDdCreateDirectDrawObject.c"
-#include "ntdd/NtGdiDdDeleteDirectDrawObject.c"
-#include "ntdd/NtGdiDdQueryDirectDrawObject.c"
-
-#include "ntgdi/NtGdiArcInternal.c"
-#include "ntgdi/NtGdiBitBlt.c"
-#include "ntgdi/NtGdiCreateBitmap.c"
-#include "ntgdi/NtGdiCreateCompatibleBitmap.c"
-#include "ntgdi/NtGdiDoPalette.c"
-#include "ntgdi/NtGdiEngCreatePalette.c"
-//#include "ntgdi/NtGdiEnumFontChunk.c"
-#include "ntgdi/NtGdiEnumFontOpen.c"
-#include "ntgdi/NtGdiGetBitmapBits.c"
-#include "ntgdi/NtGdiGetFontResourceInfoInternalW.c"
-#include "ntgdi/NtGdiGetRandomRgn.c"
-#include "ntgdi/NtGdiSelectBitmap.c"
-#include "ntgdi/NtGdiSelectBrush.c"
-#include "ntgdi/NtGdiSelectFont.c"
-#include "ntgdi/NtGdiSelectPen.c"
-#include "ntgdi/NtGdiSetBitmapBits.c"
-#include "ntgdi/NtGdiSetDIBitsToDeviceInternal.c"
-//#include "ntgdi/NtGdiSTROBJ_vEnumStart.c"
-#include "ntgdi/NtGdiGetDIBits.c"
-#include "ntgdi/NtGdiGetStockObject.c"
-
-#include "ntuser/NtUserCallHwnd.c"
-#include "ntuser/NtUserCallHwndLock.c"
-#include "ntuser/NtUserCallHwndOpt.c"
-#include "ntuser/NtUserCallHwndParam.c"
-#include "ntuser/NtUserCallHwndParamLock.c"
-#include "ntuser/NtUserCallNoParam.c"
-#include "ntuser/NtUserCallOneParam.c"
-#include "ntuser/NtUserCountClipboardFormats.c"
-//#include "ntuser/NtUserCreateWindowEx.c"
-#include "ntuser/NtUserEnumDisplaySettings.c"
-#include "ntuser/NtUserFindExistingCursorIcon.c"
-#include "ntuser/NtUserRedrawWindow.c"
-#include "ntuser/NtUserScrollDC.c"
-#include "ntuser/NtUserSystemParametersInfo.c"
-#include "ntuser/NtUserToUnicodeEx.c"
-#include "ntuser/NtUserGetTitleBarInfo.c"
-
-/* The List of tests */
-TESTENTRY TestList[] =
-{
- /* DirectDraw */
- { L"NtGdiDdCreateDirectDrawObject", Test_NtGdiDdCreateDirectDrawObject },
- { L"NtGdiDdQueryDirectDrawObject", Test_NtGdiDdQueryDirectDrawObject },
- { L"NtGdiDdDeleteDirectDrawObject", Test_NtGdiDdDeleteDirectDrawObject },
-
- /* ntgdi */
- { L"NtGdiArcInternal", Test_NtGdiArcInternal },
- { L"NtGdiBitBlt", Test_NtGdiBitBlt },
- { L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap },
- { L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap },
- { L"NtGdiDoPalette", Test_NtGdiDoPalette },
- { L"NtGdiEngCreatePalette", Test_NtGdiEngCreatePalette },
-// { L"NtGdiEnumFontChunk", Test_NtGdiEnumFontChunk },
- { L"NtGdiEnumFontOpen", Test_NtGdiEnumFontOpen },
- { L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },
- { L"NtGdiGetFontResourceInfoInternalW", Test_NtGdiGetFontResourceInfoInternalW },
- { L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn },
- { L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },
- { L"NtGdiSetDIBitsToDeviceInternal", Test_NtGdiSetDIBitsToDeviceInternal },
- { L"NtGdiSelectBitmap", Test_NtGdiSelectBitmap },
- { L"NtGdiSelectBrush", Test_NtGdiSelectBrush },
- { L"NtGdiSelectFont", Test_NtGdiSelectFont },
- { L"NtGdiSelectPen", Test_NtGdiSelectPen },
-// { L"NtGdiSTROBJ_vEnumStart", Test_NtGdiSTROBJ_vEnumStart },
- { L"NtGdiGetDIBitsInternal", Test_NtGdiGetDIBitsInternal },
- { L"NtGdiGetStockObject", Test_NtGdiGetStockObject },
-
- /* ntuser */
- { L"NtUserCallHwnd", Test_NtUserCallHwnd },
- { L"NtUserCallHwndLock", Test_NtUserCallHwndLock },
- { L"NtUserCallHwndOpt", Test_NtUserCallHwndOpt },
- { L"NtUserCallHwndParam", Test_NtUserCallHwndParam },
- { L"NtUserCallHwndParamLock", Test_NtUserCallHwndParamLock },
- { L"NtUserCallNoParam", Test_NtUserCallNoParam },
- { L"NtUserCallOneParam", Test_NtUserCallOneParam },
- { L"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats },
-// { L"NtUserCreateWindowEx", Test_NtUserCreateWindowEx },
- { L"NtUserEnumDisplaySettings", TEST_NtUserEnumDisplaySettings },
- { L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
- { L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
- { L"NtUserScrollDC", Test_NtUserScrollDC },
- { L"NtUserSystemParametersInfo", Test_NtUserSystemParametersInfo },
- { L"NtUserToUnicodeEx", Test_NtUserToUnicodeEx },
- { L"NtUserGetTitleBarInfo", Test_NtUserGetTitleBarInfo }
-};
-
-/* The function that gives us the number of tests */
-INT NumTests(void)
-{
- return sizeof(TestList) / sizeof(TESTENTRY);
-}
-
-
+#include "w32knapi.h"
+
+/* include the tests */
+
+#include "ntdd/NtGdiDdCreateDirectDrawObject.c"
+#include "ntdd/NtGdiDdDeleteDirectDrawObject.c"
+#include "ntdd/NtGdiDdQueryDirectDrawObject.c"
+
+#include "ntgdi/NtGdiArcInternal.c"
+#include "ntgdi/NtGdiBitBlt.c"
+#include "ntgdi/NtGdiCreateBitmap.c"
+#include "ntgdi/NtGdiCreateCompatibleBitmap.c"
+#include "ntgdi/NtGdiDoPalette.c"
+#include "ntgdi/NtGdiEngCreatePalette.c"
+//#include "ntgdi/NtGdiEnumFontChunk.c"
+#include "ntgdi/NtGdiEnumFontOpen.c"
+#include "ntgdi/NtGdiGetBitmapBits.c"
+#include "ntgdi/NtGdiGetFontResourceInfoInternalW.c"
+#include "ntgdi/NtGdiGetRandomRgn.c"
+#include "ntgdi/NtGdiSelectBitmap.c"
+#include "ntgdi/NtGdiSelectBrush.c"
+#include "ntgdi/NtGdiSelectFont.c"
+#include "ntgdi/NtGdiSelectPen.c"
+#include "ntgdi/NtGdiSetBitmapBits.c"
+#include "ntgdi/NtGdiSetDIBitsToDeviceInternal.c"
+//#include "ntgdi/NtGdiSTROBJ_vEnumStart.c"
+#include "ntgdi/NtGdiGetDIBits.c"
+#include "ntgdi/NtGdiGetStockObject.c"
+
+#include "ntuser/NtUserCallHwnd.c"
+#include "ntuser/NtUserCallHwndLock.c"
+#include "ntuser/NtUserCallHwndOpt.c"
+#include "ntuser/NtUserCallHwndParam.c"
+#include "ntuser/NtUserCallHwndParamLock.c"
+#include "ntuser/NtUserCallNoParam.c"
+#include "ntuser/NtUserCallOneParam.c"
+#include "ntuser/NtUserCountClipboardFormats.c"
+//#include "ntuser/NtUserCreateWindowEx.c"
+#include "ntuser/NtUserEnumDisplaySettings.c"
+#include "ntuser/NtUserFindExistingCursorIcon.c"
+#include "ntuser/NtUserRedrawWindow.c"
+#include "ntuser/NtUserScrollDC.c"
+#include "ntuser/NtUserSystemParametersInfo.c"
+#include "ntuser/NtUserToUnicodeEx.c"
+#include "ntuser/NtUserGetTitleBarInfo.c"
+
+/* The List of tests */
+TESTENTRY TestList[] =
+{
+ /* DirectDraw */
+ { L"NtGdiDdCreateDirectDrawObject", Test_NtGdiDdCreateDirectDrawObject },
+ { L"NtGdiDdQueryDirectDrawObject", Test_NtGdiDdQueryDirectDrawObject },
+ { L"NtGdiDdDeleteDirectDrawObject", Test_NtGdiDdDeleteDirectDrawObject },
+
+ /* ntgdi */
+ { L"NtGdiArcInternal", Test_NtGdiArcInternal },
+ { L"NtGdiBitBlt", Test_NtGdiBitBlt },
+ { L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap },
+ { L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap },
+ { L"NtGdiDoPalette", Test_NtGdiDoPalette },
+ { L"NtGdiEngCreatePalette", Test_NtGdiEngCreatePalette },
+// { L"NtGdiEnumFontChunk", Test_NtGdiEnumFontChunk },
+ { L"NtGdiEnumFontOpen", Test_NtGdiEnumFontOpen },
+ { L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },
+ { L"NtGdiGetFontResourceInfoInternalW", Test_NtGdiGetFontResourceInfoInternalW },
+ { L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn },
+ { L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },
+ { L"NtGdiSetDIBitsToDeviceInternal", Test_NtGdiSetDIBitsToDeviceInternal },
+ { L"NtGdiSelectBitmap", Test_NtGdiSelectBitmap },
+ { L"NtGdiSelectBrush", Test_NtGdiSelectBrush },
+ { L"NtGdiSelectFont", Test_NtGdiSelectFont },
+ { L"NtGdiSelectPen", Test_NtGdiSelectPen },
+// { L"NtGdiSTROBJ_vEnumStart", Test_NtGdiSTROBJ_vEnumStart },
+ { L"NtGdiGetDIBitsInternal", Test_NtGdiGetDIBitsInternal },
+ { L"NtGdiGetStockObject", Test_NtGdiGetStockObject },
+
+ /* ntuser */
+ { L"NtUserCallHwnd", Test_NtUserCallHwnd },
+ { L"NtUserCallHwndLock", Test_NtUserCallHwndLock },
+ { L"NtUserCallHwndOpt", Test_NtUserCallHwndOpt },
+ { L"NtUserCallHwndParam", Test_NtUserCallHwndParam },
+ { L"NtUserCallHwndParamLock", Test_NtUserCallHwndParamLock },
+ { L"NtUserCallNoParam", Test_NtUserCallNoParam },
+ { L"NtUserCallOneParam", Test_NtUserCallOneParam },
+ { L"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats },
+// { L"NtUserCreateWindowEx", Test_NtUserCreateWindowEx },
+ { L"NtUserEnumDisplaySettings", TEST_NtUserEnumDisplaySettings },
+ { L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
+ { L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
+ { L"NtUserScrollDC", Test_NtUserScrollDC },
+ { L"NtUserSystemParametersInfo", Test_NtUserSystemParametersInfo },
+ { L"NtUserToUnicodeEx", Test_NtUserToUnicodeEx },
+ { L"NtUserGetTitleBarInfo", Test_NtUserGetTitleBarInfo }
+};
+
+/* The function that gives us the number of tests */
+INT NumTests(void)
+{
+ return sizeof(TestList) / sizeof(TESTENTRY);
+}
+
+
diff --git a/rostests/apitests/w32knapi/w32knapi.c b/rostests/apitests/w32knapi/w32knapi.c
index 2146be1ad52..fa20eefcde7 100644
--- a/rostests/apitests/w32knapi/w32knapi.c
+++ b/rostests/apitests/w32knapi/w32knapi.c
@@ -1,98 +1,98 @@
-#include "w32knapi.h"
-
-HINSTANCE g_hInstance;
-HMODULE g_hModule = NULL;
-PGDI_TABLE_ENTRY GdiHandleTable;
-
-static
-PGDI_TABLE_ENTRY
-MyGdiQueryTable()
-{
- PTEB pTeb = NtCurrentTeb();
- PPEB pPeb = pTeb->ProcessEnvironmentBlock;
- return pPeb->GdiSharedHandleTable;
-}
-
-static DWORD STDCALL
-IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam)
-{
- DWORD ret;
-
- asm volatile
- (
- "pushfl;" // Save flags
- "movl %%ecx, %%eax;"
- "shl $2, %%eax;" // Calculate param size
- "subl %%eax, %%esp;" // Calculate new stack pos
- "movl %%esp, %%edi;" // Destination is stackpointer
- "cld;" // Clear direction flag
- "rep movsd;" // Copy params to the stack
- "call *%%edx;" // Call function
- "popfl;" // Restore flags
- : "=a" (ret)
- : "S" (pFirstParam), "c" (cParams), "d"(proc)
- : "%edi"
- );
-
- return ret;
-}
-
-DWORD
-Syscall(LPWSTR pszFunction, int cParams, void* pParams)
-{
- char szFunctionName[MAX_PATH];
-
- sprintf(szFunctionName, "%ls", pszFunction);
- FARPROC proc = (FARPROC)GetProcAddress(g_hModule, szFunctionName);
- if (!proc)
- {
- printf("Couldn't find proc: %s\n", szFunctionName);
- return FALSE;
- }
-
- return IntSyscall(proc, cParams, pParams);
-}
-
-BOOL
-IsFunctionPresent(LPWSTR lpszFunction)
-{
- char szFunctionName[MAX_PATH];
- sprintf(szFunctionName, "%ls", lpszFunction);
- return (GetProcAddress(g_hModule, szFunctionName) != NULL);
-}
-
-int APIENTRY
-WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
-{
- g_hInstance = hInstance;
-
- printf("Win32k native API test\n");
-
- /* Convert to gui thread */
- // IsGUIThread(TRUE); <- does not exists on win2k
-
- InitOsVersion();
- printf("g_OsIdx = %d\n", g_OsIdx);
-
- g_hModule = LoadLibraryW(L"w32kdll.dll");
- if (!g_hModule)
- {
- printf("w32kdll.dll not found!\n");
- return -1;
- }
-
- GdiHandleTable = MyGdiQueryTable();
- if(!GdiHandleTable)
- {
- FreeLibrary(g_hModule);
- printf("GdiHandleTable not found!\n");
- return -1;
- }
-
- printf("\n");
-
- return TestMain(L"w32knapi", L"win32k.sys Nt-Api");
-}
+#include "w32knapi.h"
+
+HINSTANCE g_hInstance;
+HMODULE g_hModule = NULL;
+PGDI_TABLE_ENTRY GdiHandleTable;
+
+static
+PGDI_TABLE_ENTRY
+MyGdiQueryTable()
+{
+ PTEB pTeb = NtCurrentTeb();
+ PPEB pPeb = pTeb->ProcessEnvironmentBlock;
+ return pPeb->GdiSharedHandleTable;
+}
+
+static DWORD STDCALL
+IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam)
+{
+ DWORD ret;
+
+ asm volatile
+ (
+ "pushfl;" // Save flags
+ "movl %%ecx, %%eax;"
+ "shl $2, %%eax;" // Calculate param size
+ "subl %%eax, %%esp;" // Calculate new stack pos
+ "movl %%esp, %%edi;" // Destination is stackpointer
+ "cld;" // Clear direction flag
+ "rep movsd;" // Copy params to the stack
+ "call *%%edx;" // Call function
+ "popfl;" // Restore flags
+ : "=a" (ret)
+ : "S" (pFirstParam), "c" (cParams), "d"(proc)
+ : "%edi"
+ );
+
+ return ret;
+}
+
+DWORD
+Syscall(LPWSTR pszFunction, int cParams, void* pParams)
+{
+ char szFunctionName[MAX_PATH];
+
+ sprintf(szFunctionName, "%ls", pszFunction);
+ FARPROC proc = (FARPROC)GetProcAddress(g_hModule, szFunctionName);
+ if (!proc)
+ {
+ printf("Couldn't find proc: %s\n", szFunctionName);
+ return FALSE;
+ }
+
+ return IntSyscall(proc, cParams, pParams);
+}
+
+BOOL
+IsFunctionPresent(LPWSTR lpszFunction)
+{
+ char szFunctionName[MAX_PATH];
+ sprintf(szFunctionName, "%ls", lpszFunction);
+ return (GetProcAddress(g_hModule, szFunctionName) != NULL);
+}
+
+int APIENTRY
+WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ g_hInstance = hInstance;
+
+ printf("Win32k native API test\n");
+
+ /* Convert to gui thread */
+ // IsGUIThread(TRUE); <- does not exists on win2k
+
+ InitOsVersion();
+ printf("g_OsIdx = %d\n", g_OsIdx);
+
+ g_hModule = LoadLibraryW(L"w32kdll.dll");
+ if (!g_hModule)
+ {
+ printf("w32kdll.dll not found!\n");
+ return -1;
+ }
+
+ GdiHandleTable = MyGdiQueryTable();
+ if(!GdiHandleTable)
+ {
+ FreeLibrary(g_hModule);
+ printf("GdiHandleTable not found!\n");
+ return -1;
+ }
+
+ printf("\n");
+
+ return TestMain(L"w32knapi", L"win32k.sys Nt-Api");
+}
diff --git a/rostests/apitests/w32knapi/w32knapi.h b/rostests/apitests/w32knapi/w32knapi.h
index af4a34719e3..4463015e162 100644
--- a/rostests/apitests/w32knapi/w32knapi.h
+++ b/rostests/apitests/w32knapi/w32knapi.h
@@ -1,65 +1,65 @@
-#ifndef _W32KNAPI_H
-#define _W32KNAPI_H
-
-/* SDK/NDK Headers */
-#define NTOS_MODE_USER
-#define WIN32_NO_STATUS
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-/* Public Win32K Headers */
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "../apitest.h"
-#include "resource.h"
-
-typedef struct
-{
- LPWSTR lpszFunction;
- INT nSyscallNum;
- INT nParams;
-} SYCALL_ENTRY, *PSYSCALL_ENTRY;
-
-extern HINSTANCE g_hInstance;
-extern HMODULE g_hModule;
-extern PGDI_TABLE_ENTRY GdiHandleTable;
-
-DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
-BOOL InitOsVersion();
-extern UINT g_OsIdx;
-
-typedef UINT ASPI[5];
-extern ASPI gNOPARAM_ROUTINE_CREATEMENU;
-extern ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP;
-extern ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK;
-extern ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT;
-extern ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON;
-extern ASPI gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW;
-extern ASPI gHWND_ROUTINE_GETWNDCONTEXTHLPID;
-extern ASPI gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID;
-
-#define _NOPARAM_ROUTINE_CREATEMENU gNOPARAM_ROUTINE_CREATEMENU[g_OsIdx]
-#define _NOPARAM_ROUTINE_CREATEMENUPOPUP gNOPARAM_ROUTINE_CREATEMENUPOPUP[g_OsIdx]
-#define _NOPARAM_ROUTINE_LOADUSERAPIHOOK gNOPARAM_ROUTINE_LOADUSERAPIHOOK[g_OsIdx]
-#define _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT gONEPARAM_ROUTINE_MAPDEKTOPOBJECT[g_OsIdx]
-#define _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON gONEPARAM_ROUTINE_SWAPMOUSEBUTTON[g_OsIdx]
-#define _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW[g_OsIdx]
-#define _HWND_ROUTINE_GETWNDCONTEXTHLPID gHWND_ROUTINE_GETWNDCONTEXTHLPID[g_OsIdx]
-#define _HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID[g_OsIdx]
-
-
-
-#endif /* _W32KNAPI_H */
+#ifndef _W32KNAPI_H
+#define _W32KNAPI_H
+
+/* SDK/NDK Headers */
+#define NTOS_MODE_USER
+#define WIN32_NO_STATUS
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+/* Public Win32K Headers */
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "../apitest.h"
+#include "resource.h"
+
+typedef struct
+{
+ LPWSTR lpszFunction;
+ INT nSyscallNum;
+ INT nParams;
+} SYCALL_ENTRY, *PSYSCALL_ENTRY;
+
+extern HINSTANCE g_hInstance;
+extern HMODULE g_hModule;
+extern PGDI_TABLE_ENTRY GdiHandleTable;
+
+DWORD Syscall(LPWSTR lpszFunction, int cParams, void* pParams);
+BOOL InitOsVersion();
+extern UINT g_OsIdx;
+
+typedef UINT ASPI[5];
+extern ASPI gNOPARAM_ROUTINE_CREATEMENU;
+extern ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP;
+extern ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK;
+extern ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT;
+extern ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON;
+extern ASPI gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW;
+extern ASPI gHWND_ROUTINE_GETWNDCONTEXTHLPID;
+extern ASPI gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID;
+
+#define _NOPARAM_ROUTINE_CREATEMENU gNOPARAM_ROUTINE_CREATEMENU[g_OsIdx]
+#define _NOPARAM_ROUTINE_CREATEMENUPOPUP gNOPARAM_ROUTINE_CREATEMENUPOPUP[g_OsIdx]
+#define _NOPARAM_ROUTINE_LOADUSERAPIHOOK gNOPARAM_ROUTINE_LOADUSERAPIHOOK[g_OsIdx]
+#define _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT gONEPARAM_ROUTINE_MAPDEKTOPOBJECT[g_OsIdx]
+#define _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON gONEPARAM_ROUTINE_SWAPMOUSEBUTTON[g_OsIdx]
+#define _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW[g_OsIdx]
+#define _HWND_ROUTINE_GETWNDCONTEXTHLPID gHWND_ROUTINE_GETWNDCONTEXTHLPID[g_OsIdx]
+#define _HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID[g_OsIdx]
+
+
+
+#endif /* _W32KNAPI_H */
diff --git a/rostests/apitests/w32knapi/w32knapi.rbuild b/rostests/apitests/w32knapi/w32knapi.rbuild
index 2ab7793af34..948fedc33d2 100644
--- a/rostests/apitests/w32knapi/w32knapi.rbuild
+++ b/rostests/apitests/w32knapi/w32knapi.rbuild
@@ -1,19 +1,19 @@
-
- .
-
- 0x0501
- 0x501
- apitest
- ntdll
- kernel32
- user32
- gdi32
- shell32
- advapi32
- w32kdll
- dbghelp
- w32knapi.c
- osver.c
- testlist.c
- w32knapi.rc
-
+
+ .
+
+ 0x0501
+ 0x501
+ apitest
+ ntdll
+ kernel32
+ user32
+ gdi32
+ shell32
+ advapi32
+ w32kdll
+ dbghelp
+ w32knapi.c
+ osver.c
+ testlist.c
+ w32knapi.rc
+
diff --git a/rostests/apitests/w32knapi/w32knapi.rc b/rostests/apitests/w32knapi/w32knapi.rc
index d3cc13e3410..4e631d954c6 100644
--- a/rostests/apitests/w32knapi/w32knapi.rc
+++ b/rostests/apitests/w32knapi/w32knapi.rc
@@ -1,5 +1,5 @@
-#include
-#include "resource.h"
-
-IDI_ICON ICON "resource/system.ico"
-
+#include
+#include "resource.h"
+
+IDI_ICON ICON "resource/system.ico"
+