From: Thomas Faber Date: Sat, 2 Feb 2019 21:48:51 +0000 (+0100) Subject: [NTDLL_APITEST] Add test for NtDuplicateObject with OBJ_PROTECT_CLOSE. X-Git-Tag: 0.4.13-dev~483 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=58215e5fb77a1c457ce26274fdf4d720a982b92b [NTDLL_APITEST] Add test for NtDuplicateObject with OBJ_PROTECT_CLOSE. --- diff --git a/modules/rostests/apitests/ntdll/CMakeLists.txt b/modules/rostests/apitests/ntdll/CMakeLists.txt index 4860cd225a6..e3a2725d6b0 100644 --- a/modules/rostests/apitests/ntdll/CMakeLists.txt +++ b/modules/rostests/apitests/ntdll/CMakeLists.txt @@ -15,6 +15,7 @@ list(APPEND SOURCE NtCreateKey.c NtCreateThread.c NtDeleteKey.c + NtDuplicateObject.c NtFreeVirtualMemory.c NtLoadUnloadKey.c NtMapViewOfSection.c diff --git a/modules/rostests/apitests/ntdll/NtDuplicateObject.c b/modules/rostests/apitests/ntdll/NtDuplicateObject.c new file mode 100644 index 00000000000..7944c3211ec --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtDuplicateObject.c @@ -0,0 +1,30 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: Test for NtDuplicateObject + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber@reactos.org) + */ + +#include "precomp.h" + +#define OBJ_PROTECT_CLOSE 0x01 + +START_TEST(NtDuplicateObject) +{ + NTSTATUS Status; + HANDLE Handle; + + Handle = NULL; + Status = NtDuplicateObject(NtCurrentProcess(), + NtCurrentProcess(), + NtCurrentProcess(), + &Handle, + GENERIC_ALL, + OBJ_PROTECT_CLOSE, + 0); + ok_hex(Status, STATUS_SUCCESS); + ok(Handle != NULL && Handle != NtCurrentProcess(), + "Handle = %p\n", Handle); + Status = NtClose(Handle); + ok_hex(Status, STATUS_HANDLE_NOT_CLOSABLE); +} diff --git a/modules/rostests/apitests/ntdll/testlist.c b/modules/rostests/apitests/ntdll/testlist.c index e627634de87..a828865d8a4 100644 --- a/modules/rostests/apitests/ntdll/testlist.c +++ b/modules/rostests/apitests/ntdll/testlist.c @@ -13,6 +13,7 @@ extern void func_NtCreateFile(void); extern void func_NtCreateKey(void); extern void func_NtCreateThread(void); extern void func_NtDeleteKey(void); +extern void func_NtDuplicateObject(void); extern void func_NtFreeVirtualMemory(void); extern void func_NtLoadUnloadKey(void); extern void func_NtMapViewOfSection(void); @@ -77,6 +78,7 @@ const struct test winetest_testlist[] = { "NtCreateKey", func_NtCreateKey }, { "NtCreateThread", func_NtCreateThread }, { "NtDeleteKey", func_NtDeleteKey }, + { "NtDuplicateObject", func_NtDuplicateObject }, { "NtFreeVirtualMemory", func_NtFreeVirtualMemory }, { "NtLoadUnloadKey", func_NtLoadUnloadKey }, { "NtMapViewOfSection", func_NtMapViewOfSection },