2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for SaferIdentifyLevel
5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
12 #define SaferIdentifyLevel(c, p, h, r) SaferIdentifyLevel(c, (PSAFER_CODE_PROPERTIES)(p), h, r)
14 START_TEST(SaferIdentifyLevel
)
18 SAFER_LEVEL_HANDLE handle
;
19 SAFER_CODE_PROPERTIES_V2 props
[16];
22 SetLastError(0xbadbad00);
23 ret
= SaferIdentifyLevel(0, NULL
, NULL
, NULL
);
24 error
= GetLastError();
25 ok(ret
== FALSE
, "ret = %d\n", ret
);
26 ok(error
== ERROR_NOACCESS
, "error = %lu\n", error
);
27 EndSeh(STATUS_SUCCESS
);
30 (VOID
)SaferIdentifyLevel(0, NULL
, &handle
, NULL
);
31 EndSeh(STATUS_ACCESS_VIOLATION
);
34 ZeroMemory(props
, sizeof(props
));
35 SetLastError(0xbadbad00);
36 ret
= SaferIdentifyLevel(16, props
, &handle
, NULL
);
37 error
= GetLastError();
38 ok(ret
== FALSE
, "ret = %d\n", ret
);
39 ok(error
== ERROR_BAD_LENGTH
, "error = %lu\n", error
);
40 EndSeh(STATUS_SUCCESS
);
43 ZeroMemory(props
, sizeof(props
));
44 SetLastError(0xbadbad00);
45 ret
= SaferIdentifyLevel(1, props
, NULL
, NULL
);
46 error
= GetLastError();
47 ok(ret
== FALSE
, "ret = %d\n", ret
);
48 ok(error
== ERROR_NOACCESS
, "error = %lu\n", error
);
49 EndSeh(STATUS_SUCCESS
);
52 handle
= InvalidPointer
;
53 ZeroMemory(props
, sizeof(props
));
54 SetLastError(0xbadbad00);
55 ret
= SaferIdentifyLevel(1, props
, &handle
, NULL
);
56 error
= GetLastError();
57 ok(ret
== FALSE
, "ret = %d\n", ret
);
58 ok(handle
== InvalidPointer
, "handle = %p\n", handle
);
59 ok(error
== ERROR_BAD_LENGTH
, "error = %lu\n", error
);
60 if (handle
&& handle
!= InvalidPointer
)
61 SaferCloseLevel(handle
);
62 EndSeh(STATUS_SUCCESS
);
66 handle
= InvalidPointer
;
67 ZeroMemory(props
, sizeof(props
));
68 props
[0].cbSize
= sizeof(SAFER_CODE_PROPERTIES_V1
);
69 SetLastError(0xbadbad00);
70 ret
= SaferIdentifyLevel(1, props
, &handle
, NULL
);
71 error
= GetLastError();
72 ok(ret
== TRUE
, "ret = %d\n", ret
);
73 ok(handle
!= NULL
&& handle
!= INVALID_HANDLE_VALUE
&& handle
!= InvalidPointer
, "handle = %p\n", handle
);
74 ok(error
== 0xbadbad00, "error = %lu\n", error
);
75 if (handle
&& handle
!= InvalidPointer
)
77 ret
= SaferCloseLevel(handle
);
78 ok(ret
== TRUE
, "ret = %d\n", ret
);
80 EndSeh(STATUS_SUCCESS
);
83 handle
= InvalidPointer
;
84 ZeroMemory(props
, sizeof(props
));
85 props
[0].cbSize
= sizeof(SAFER_CODE_PROPERTIES_V2
);
86 SetLastError(0xbadbad00);
87 ret
= SaferIdentifyLevel(1, props
, &handle
, NULL
);
88 error
= GetLastError();
89 ok(ret
== FALSE
, "ret = %d\n", ret
);
90 ok(handle
== InvalidPointer
, "handle = %p\n", handle
);
91 ok(error
== ERROR_BAD_LENGTH
, "error = %lu\n", error
);
92 if (handle
&& handle
!= InvalidPointer
)
93 SaferCloseLevel(handle
);
94 EndSeh(STATUS_SUCCESS
);
96 /* Test SaferCloseLevel too */
98 ret
= SaferCloseLevel(NULL
);
99 error
= GetLastError();
100 ok(ret
== FALSE
, "ret = %d\n", ret
);
101 ok(error
== ERROR_INVALID_HANDLE
, "error = %lu\n", error
);
102 EndSeh(STATUS_SUCCESS
);
105 ret
= SaferCloseLevel(INVALID_HANDLE_VALUE
);
106 error
= GetLastError();
107 ok(ret
== FALSE
, "ret = %d\n", ret
);
108 ok(error
== ERROR_INVALID_HANDLE
, "error = %lu\n", error
);
109 EndSeh(STATUS_SUCCESS
);
112 ret
= SaferCloseLevel(InvalidPointer
);
113 error
= GetLastError();
114 ok(ret
== FALSE
, "ret = %d\n", ret
);
115 ok(error
== ERROR_INVALID_HANDLE
, "error = %lu\n", error
);
116 EndSeh(STATUS_SUCCESS
);