ReactOS 0.4.16-dev-1946-g52006dd
apitest.h File Reference
#include <wine/test.h>
#include <pseh/pseh2.h>
Include dependency graph for apitest.h:

Go to the source code of this file.

Macros

#define WIN32_NO_STATUS
 
#define InvalidPointer   ((PVOID)0x5555555555555555ULL)
 
#define KUSER_SHARED_DATA_UMPTR   0x7FFE0000
 
#define GetMajorNTVersion()   (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x026C))
 
#define GetMinorNTVersion()   (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x0270))
 
#define GetNTVersion()   ((GetMajorNTVersion() << 8) | GetMinorNTVersion())
 
#define GENERATE_NTDDI(Major, Minor, ServicePack, Subversion)    (((Major) << 24) | ((Minor) << 16) | ((ServicePack) << 8) | (Subversion))
 
#define NTDDI_MIN   0UL
 
#define NTDDI_MAX   0xFFFFFFFFUL
 
#define StartSeh()
 
#define EndSeh(ExpectedStatus)
 
#define ok_hr(status, expected)   ok_hex(status, expected)
 
#define ok_hr_(file, line, status, expected)   ok_hex_(file, line, status, expected)
 
#define ok_eq_print(value, expected, spec)   ok((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)
 
#define ok_eq_print_(file, line, value, expected, spec)   ok_(file,line)((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)
 
#define ok_eq_pointer(value, expected)   ok_eq_print(value, expected, "%p")
 
#define ok_eq_int(value, expected)   ok_eq_print(value, expected, "%d")
 
#define ok_eq_uint(value, expected)   ok_eq_print(value, expected, "%u")
 
#define ok_eq_long(value, expected)   ok_eq_print(value, expected, "%ld")
 
#define ok_eq_ulong(value, expected)   ok_eq_print(value, expected, "%lu")
 
#define ok_eq_longlong(value, expected)   ok_eq_print(value, expected, "%I64d")
 
#define ok_eq_ulonglong(value, expected)   ok_eq_print(value, expected, "%I64u")
 
#define ok_eq_char(value, expected)   ok_eq_print(value, expected, "%c")
 
#define ok_eq_wchar(value, expected)   ok_eq_print(value, expected, "%C")
 
#define ok_eq_size(value, expected)   ok_eq_print(value, (SIZE_T)(expected), "%lu")
 
#define ok_eq_longptr(value, expected)   ok_eq_print(value, (LONG_PTR)(expected), "%ld")
 
#define ok_eq_ulongptr(value, expected)   ok_eq_print(value, (ULONG_PTR)(expected), "%lu")
 
#define ok_eq_hex(value, expected)   ok_eq_print((unsigned long)value, (unsigned long)expected, "0x%08lx")
 
#define ok_bool_true(value, desc)   ok((value) == TRUE, desc " FALSE, expected TRUE\n")
 
#define ok_bool_false(value, desc)   ok((value) == FALSE, desc " TRUE, expected FALSE\n")
 
#define ok_eq_bool(value, expected)
 
#define ok_eq_str(value, expected)   ok(!strcmp(value, expected), #value " = \"%s\", expected \"%s\"\n", value, expected)
 
#define ok_eq_wstr(value, expected)   ok(!wcscmp(value, expected), #value " = \"%ls\", expected \"%ls\"\n", value, expected)
 
#define ok_eq_tag(value, expected)   ok_eq_print(value, expected, "0x%08lx")
 
#define ok_eq_hex_(file, line, value, expected)   ok_eq_print_(file, line, value, expected, "0x%08lx")
 
#define ok_eq_hex64_(file, line, value, expected)   ok_eq_print_(file, line, value, expected, "%I64x")
 
#define ok_eq_hex64(value, expected)   ok_eq_print((unsigned long long)value, (unsigned long long)expected, "%I64x")
 
#define ok_eq_xmm(value, expected)   ok((value).Low == (expected).Low, #value " = %I64x'%08I64x, expected %I64x'%08I64x\n", (value).Low, (value).High, (expected).Low, (expected).High)
 

Functions

static ULONG GetNTDDIVersion (VOID)
 

Macro Definition Documentation

◆ EndSeh

#define EndSeh (   ExpectedStatus)
Value:
} \
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) \
{ \
ExceptionStatus = _SEH2_GetExceptionCode(); \
} \
ok(ExceptionStatus == (ExpectedStatus), \
"Exception 0x%08lx, expected 0x%08lx\n", \
ExceptionStatus, (ExpectedStatus)); \
}
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:181
#define _SEH2_END
Definition: pseh2_64.h:171

Definition at line 99 of file apitest.h.

◆ GENERATE_NTDDI

#define GENERATE_NTDDI (   Major,
  Minor,
  ServicePack,
  Subversion 
)     (((Major) << 24) | ((Minor) << 16) | ((ServicePack) << 8) | (Subversion))

Definition at line 18 of file apitest.h.

◆ GetMajorNTVersion

#define GetMajorNTVersion ( )    (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x026C))

Definition at line 15 of file apitest.h.

◆ GetMinorNTVersion

#define GetMinorNTVersion ( )    (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x0270))

Definition at line 16 of file apitest.h.

◆ GetNTVersion

#define GetNTVersion ( )    ((GetMajorNTVersion() << 8) | GetMinorNTVersion())

Definition at line 17 of file apitest.h.

◆ InvalidPointer

#define InvalidPointer   ((PVOID)0x5555555555555555ULL)

Definition at line 10 of file apitest.h.

◆ KUSER_SHARED_DATA_UMPTR

#define KUSER_SHARED_DATA_UMPTR   0x7FFE0000

Definition at line 14 of file apitest.h.

◆ NTDDI_MAX

#define NTDDI_MAX   0xFFFFFFFFUL

Definition at line 21 of file apitest.h.

◆ NTDDI_MIN

#define NTDDI_MIN   0UL

Definition at line 20 of file apitest.h.

◆ ok_bool_false

#define ok_bool_false (   value,
  desc 
)    ok((value) == FALSE, desc " TRUE, expected FALSE\n")

Definition at line 136 of file apitest.h.

◆ ok_bool_true

#define ok_bool_true (   value,
  desc 
)    ok((value) == TRUE, desc " FALSE, expected TRUE\n")

Definition at line 135 of file apitest.h.

◆ ok_eq_bool

#define ok_eq_bool (   value,
  expected 
)
Value:
ok((value) == (expected), #value " = %s, expected %s\n", \
(value) ? "TRUE" : "FALSE", \
(expected) ? "TRUE" : "FALSE")
#define ok(value,...)
Definition: atltest.h:57
BOOL expected
Definition: store.c:2000
Definition: pdh_main.c:96

Definition at line 137 of file apitest.h.

◆ ok_eq_char

#define ok_eq_char (   value,
  expected 
)    ok_eq_print(value, expected, "%c")

Definition at line 123 of file apitest.h.

◆ ok_eq_hex

#define ok_eq_hex (   value,
  expected 
)    ok_eq_print((unsigned long)value, (unsigned long)expected, "0x%08lx")

Definition at line 134 of file apitest.h.

◆ ok_eq_hex64

#define ok_eq_hex64 (   value,
  expected 
)    ok_eq_print((unsigned long long)value, (unsigned long long)expected, "%I64x")

Definition at line 146 of file apitest.h.

◆ ok_eq_hex64_

#define ok_eq_hex64_ (   file,
  line,
  value,
  expected 
)    ok_eq_print_(file, line, value, expected, "%I64x")

Definition at line 145 of file apitest.h.

◆ ok_eq_hex_

#define ok_eq_hex_ (   file,
  line,
  value,
  expected 
)    ok_eq_print_(file, line, value, expected, "0x%08lx")

Definition at line 144 of file apitest.h.

◆ ok_eq_int

#define ok_eq_int (   value,
  expected 
)    ok_eq_print(value, expected, "%d")

Definition at line 117 of file apitest.h.

◆ ok_eq_long

#define ok_eq_long (   value,
  expected 
)    ok_eq_print(value, expected, "%ld")

Definition at line 119 of file apitest.h.

◆ ok_eq_longlong

#define ok_eq_longlong (   value,
  expected 
)    ok_eq_print(value, expected, "%I64d")

Definition at line 121 of file apitest.h.

◆ ok_eq_longptr

#define ok_eq_longptr (   value,
  expected 
)    ok_eq_print(value, (LONG_PTR)(expected), "%ld")

Definition at line 127 of file apitest.h.

◆ ok_eq_pointer

#define ok_eq_pointer (   value,
  expected 
)    ok_eq_print(value, expected, "%p")

Definition at line 116 of file apitest.h.

◆ ok_eq_print

#define ok_eq_print (   value,
  expected,
  spec 
)    ok((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)

Definition at line 114 of file apitest.h.

◆ ok_eq_print_

#define ok_eq_print_ (   file,
  line,
  value,
  expected,
  spec 
)    ok_(file,line)((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)

Definition at line 115 of file apitest.h.

◆ ok_eq_size

#define ok_eq_size (   value,
  expected 
)    ok_eq_print(value, (SIZE_T)(expected), "%lu")

Definition at line 126 of file apitest.h.

◆ ok_eq_str

#define ok_eq_str (   value,
  expected 
)    ok(!strcmp(value, expected), #value " = \"%s\", expected \"%s\"\n", value, expected)

Definition at line 140 of file apitest.h.

◆ ok_eq_tag

#define ok_eq_tag (   value,
  expected 
)    ok_eq_print(value, expected, "0x%08lx")

Definition at line 142 of file apitest.h.

◆ ok_eq_uint

#define ok_eq_uint (   value,
  expected 
)    ok_eq_print(value, expected, "%u")

Definition at line 118 of file apitest.h.

◆ ok_eq_ulong

#define ok_eq_ulong (   value,
  expected 
)    ok_eq_print(value, expected, "%lu")

Definition at line 120 of file apitest.h.

◆ ok_eq_ulonglong

#define ok_eq_ulonglong (   value,
  expected 
)    ok_eq_print(value, expected, "%I64u")

Definition at line 122 of file apitest.h.

◆ ok_eq_ulongptr

#define ok_eq_ulongptr (   value,
  expected 
)    ok_eq_print(value, (ULONG_PTR)(expected), "%lu")

Definition at line 128 of file apitest.h.

◆ ok_eq_wchar

#define ok_eq_wchar (   value,
  expected 
)    ok_eq_print(value, expected, "%C")

Definition at line 124 of file apitest.h.

◆ ok_eq_wstr

#define ok_eq_wstr (   value,
  expected 
)    ok(!wcscmp(value, expected), #value " = \"%ls\", expected \"%ls\"\n", value, expected)

Definition at line 141 of file apitest.h.

◆ ok_eq_xmm

#define ok_eq_xmm (   value,
  expected 
)    ok((value).Low == (expected).Low, #value " = %I64x'%08I64x, expected %I64x'%08I64x\n", (value).Low, (value).High, (expected).Low, (expected).High)

Definition at line 147 of file apitest.h.

◆ ok_hr

#define ok_hr (   status,
  expected 
)    ok_hex(status, expected)

Definition at line 111 of file apitest.h.

◆ ok_hr_

#define ok_hr_ (   file,
  line,
  status,
  expected 
)    ok_hex_(file, line, status, expected)

Definition at line 112 of file apitest.h.

◆ StartSeh

#define StartSeh ( )
Value:
{ \
NTSTATUS ExceptionStatus = STATUS_SUCCESS; \
{
LONG NTSTATUS
Definition: precomp.h:26
#define _SEH2_TRY
Definition: pseh2_64.h:71
#define STATUS_SUCCESS
Definition: shellext.h:65

Definition at line 93 of file apitest.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 5 of file apitest.h.

Function Documentation

◆ GetNTDDIVersion()

static ULONG GetNTDDIVersion ( VOID  )
inlinestatic

Definition at line 23 of file apitest.h.

24{
25 ULONG NTBuildNo, NTMajor, NTMinor, ServicePack, Subversion;
26
28 {
29 NTMajor = GetMajorNTVersion();
30 NTMinor = GetMinorNTVersion();
31 ServicePack = 0;
32
33 if (NTMajor > 6)
34 NTBuildNo = (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x0260));
35 else
36 NTBuildNo = 0;
37
38 switch (NTBuildNo)
39 {
40 // Windows 10
41 case 10240: Subversion = 0; break; // 1507
42 case 10586: Subversion = 1; break; // 1511
43 case 14393: Subversion = 2; break; // 1607
44 case 15063: Subversion = 3; break; // 1703
45 case 16299: Subversion = 4; break; // 1709
46 case 17134: Subversion = 5; break; // 1803
47 case 17763: Subversion = 6; break; // 1809
48 case 18362: Subversion = 7; break; // 1903
49 case 18363: Subversion = 8; break; // 1909
50 case 19041: Subversion = 9; break; // 2004
51 case 19042: Subversion = 10; break; // 20H2
52 case 19043: Subversion = 11; break; // 21H1
53 case 19044: Subversion = 12; break; // 21H2
54 case 19045: Subversion = 13; break; // 22H2
55
56 // Windows 11
57 case 22000: Subversion = 14; break; // 21H2
58 case 22621: Subversion = 15; break; // 22H2
59 case 22631: Subversion = 16; break; // 23H2
60 case 26100: Subversion = 17; break; // 24H2
61
62 default: Subversion = 0; break; // Unknown build
63 }
64 }
65 else
66 {
67 OSVERSIONINFOEXW OSVersion;
68
69 OSVersion.dwOSVersionInfoSize = sizeof(OSVersion);
70
71 if (GetVersionExW((LPOSVERSIONINFOW)&OSVersion))
72 {
73 NTMajor = OSVersion.dwMajorVersion;
74 NTMinor = OSVersion.dwMinorVersion;
75 ServicePack = OSVersion.wServicePackMajor;
76 Subversion = 0;
77 }
78 else
79 {
80 trace("Estimating an NTDDI value, GetVersionEx failed.\n");
81 NTMajor = GetMajorNTVersion();
82 NTMinor = GetMinorNTVersion();
83 ServicePack = 0;
84 Subversion = 0;
85 }
86 }
87
88 return GENERATE_NTDDI(NTMajor, NTMinor, ServicePack, Subversion);
89}
#define GetMajorNTVersion()
Definition: apitest.h:15
#define GetNTVersion()
Definition: apitest.h:17
#define GENERATE_NTDDI(Major, Minor, ServicePack, Subversion)
Definition: apitest.h:18
#define GetMinorNTVersion()
Definition: apitest.h:16
#define KUSER_SHARED_DATA_UMPTR
Definition: apitest.h:14
#define trace
Definition: atltest.h:70
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
Definition: version.c:37
#define _WIN32_WINNT_WINBLUE
Definition: sdkddkver.h:30
ULONG dwMajorVersion
Definition: rtltypes.h:270
ULONG dwMinorVersion
Definition: rtltypes.h:271
ULONG dwOSVersionInfoSize
Definition: rtltypes.h:269
USHORT wServicePackMajor
Definition: rtltypes.h:275
uint32_t ULONG
Definition: typedefs.h:59

Referenced by TestClassesEx(), and TestInterfaceRegistry().