dd8d0849b925004ca64cce88a5b8f2e6352ab95e
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 #include <ndk/obfuncs.h>
11 #include <ndk/psfuncs.h>
12 #include <ndk/rtlfuncs.h>
14 START_TEST(NtOpenThreadToken
)
19 ULONG HandleAttributes
[] = { 0, OBJ_KERNEL_HANDLE
};
22 TokenHandle
= (HANDLE
)0x55555555;
23 Status
= NtOpenThreadToken(NtCurrentThread(),
27 ok(Status
== STATUS_NO_TOKEN
, "Status = %lx\n", Status
);
28 ok(TokenHandle
== NULL
, "TokenHandle = %p\n", TokenHandle
);
30 Status
= RtlImpersonateSelf(SecurityImpersonation
);
31 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
32 for (OpenAsSelf
= FALSE
; OpenAsSelf
<= TRUE
; OpenAsSelf
++)
34 Status
= NtOpenThreadToken(NtCurrentThread(),
38 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
39 if (NT_SUCCESS(Status
))
41 ok((LONG_PTR
)TokenHandle
> 0, "TokenHandle = %p\n", TokenHandle
);
42 Status
= NtClose(TokenHandle
);
43 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
46 for (i
= 0; i
< RTL_NUMBER_OF(HandleAttributes
); i
++)
48 Status
= NtOpenThreadTokenEx(NtCurrentThread(),
53 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
54 if (NT_SUCCESS(Status
))
56 ok((LONG_PTR
)TokenHandle
> 0, "TokenHandle = %p\n", TokenHandle
);
57 Status
= NtClose(TokenHandle
);
58 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);
64 Status
= NtSetInformationThread(NtCurrentThread(),
65 ThreadImpersonationToken
,
68 ok(Status
== STATUS_SUCCESS
, "Status = %lx\n", Status
);