2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Test for NtOpenThreadToken[Ex]
5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
10 START_TEST(NtOpenThreadToken
)
15 ULONG HandleAttributes
[] = { 0, OBJ_KERNEL_HANDLE
};
18 TokenHandle
= (HANDLE
)0x55555555;
19 Status
= NtOpenThreadToken(NtCurrentThread(),
23 ok(Status
== STATUS_NO_TOKEN
, "Status = %lx\n", Status
);
24 ok(TokenHandle
== (HANDLE
)0x55555555 /* 2003 */ ||
25 TokenHandle
== NULL
/* Win7 */, "TokenHandle = %p\n", TokenHandle
);
27 Status
= RtlImpersonateSelf(SecurityImpersonation
);
28 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
29 for (OpenAsSelf
= FALSE
; OpenAsSelf
<= TRUE
; OpenAsSelf
++)
31 Status
= NtOpenThreadToken(NtCurrentThread(),
35 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
36 if (NT_SUCCESS(Status
))
38 ok((LONG_PTR
)TokenHandle
> 0, "TokenHandle = %p\n", TokenHandle
);
39 Status
= NtClose(TokenHandle
);
40 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
43 for (i
= 0; i
< RTL_NUMBER_OF(HandleAttributes
); i
++)
45 Status
= NtOpenThreadTokenEx(NtCurrentThread(),
50 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
51 if (NT_SUCCESS(Status
))
53 ok((LONG_PTR
)TokenHandle
> 0, "TokenHandle = %p\n", TokenHandle
);
54 Status
= NtClose(TokenHandle
);
55 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
61 Status
= NtSetInformationThread(NtCurrentThread(),
62 ThreadImpersonationToken
,
65 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);