Actually, in XP, OBJ_KERNEL_HANDLE Did work, and gave you a kernel handle that you could never use. In Windows Vista, it returns a failure code. Not sure about 2003.
Best regards, Alex Ionescu
On Sat, Sep 19, 2015 at 2:46 PM, tfaber@svn.reactos.org wrote:
Author: tfaber Date: Sat Sep 19 21:46:40 2015 New Revision: 69296
URL: http://svn.reactos.org/svn/reactos?rev=69296&view=rev Log: [KMTESTS]
- Add missing OBJ_KERNEL_HANDLE
- OBJ_KERNEL_HANDLE in user mode has no effect... no reason to make a
define around it CORE-10207
Modified: trunk/rostests/kmtests/ntos_io/IoCreateFile.c trunk/rostests/kmtests/ntos_ke/KeEvent.c trunk/rostests/kmtests/rtl/RtlRegistry.c
Modified: trunk/rostests/kmtests/ntos_io/IoCreateFile.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_io/IoCreateFi...
============================================================================== --- trunk/rostests/kmtests/ntos_io/IoCreateFile.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_io/IoCreateFile.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -454,7 +454,7 @@ ok_eq_hex(IoStatusBlock.Status, 0xFFFFFFFF); if (Status == STATUS_SUCCESS) {
ObCloseHandle(ParentHandle, KernelMode);
ObCloseHandle(ParentHandle, UserMode);}
/* Attempt relative target open */
@@ -462,7 +462,7 @@ IoStatusBlock.Information = 0xFFFFFFFF; InitializeObjectAttributes(&ObjectAttributes, &SystemRoot,
OBJ_CASE_INSENSITIVE,
Status = ZwOpenFile(&SystemRootHandle, GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);@@ -478,7 +478,7 @@ IoStatusBlock.Information = 0xFFFFFFFF; InitializeObjectAttributes(&ObjectAttributes, &Regedit,
OBJ_CASE_INSENSITIVE,
OBJ_CASE_INSENSITIVE |OBJ_KERNEL_HANDLE, SystemRootHandle, NULL); Status = IoCreateFile(&ParentHandle,
Modified: trunk/rostests/kmtests/ntos_ke/KeEvent.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_ke/KeEvent.c?...
============================================================================== --- trunk/rostests/kmtests/ntos_ke/KeEvent.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_ke/KeEvent.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -155,6 +155,7 @@ PVOID ThreadObjects[RTL_NUMBER_OF(Threads)]; LONG State; PKTHREAD Thread = KeGetCurrentThread();
OBJECT_ATTRIBUTES ObjectAttributes;
LongTimeout.QuadPart = -100 * MILLISECOND; ShortTimeout.QuadPart = -1 * MILLISECOND;
@@ -165,7 +166,12 @@ { Threads[i].Event = Event; Threads[i].Signal = FALSE;
Status = PsCreateSystemThread(&Threads[i].Handle, GENERIC_ALL,NULL, NULL, NULL, WaitForEventThread, &Threads[i]);
InitializeObjectAttributes(&ObjectAttributes,NULL,OBJ_KERNEL_HANDLE,NULL,NULL);Status = PsCreateSystemThread(&Threads[i].Handle, GENERIC_ALL,&ObjectAttributes, NULL, NULL, WaitForEventThread, &Threads[i]); ok_eq_hex(Status, STATUS_SUCCESS); Status = ObReferenceObjectByHandle(Threads[i].Handle, SYNCHRONIZE, *PsThreadType, KernelMode, (PVOID *)&Threads[i].Thread, NULL); ok_eq_hex(Status, STATUS_SUCCESS);
Modified: trunk/rostests/kmtests/rtl/RtlRegistry.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/rtl/RtlRegistry.c?...
============================================================================== --- trunk/rostests/kmtests/rtl/RtlRegistry.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/rtl/RtlRegistry.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -7,12 +7,6 @@
#define KMT_EMULATE_KERNEL #include <kmt_test.h>
-#ifdef KMT_KERNEL_MODE -#define KMT_KERNEL_HANDLE OBJ_KERNEL_HANDLE -#else -#define KMT_KERNEL_HANDLE 0 -#endif
#ifndef RTL_NUMBER_OF #define RTL_NUMBER_OF(x) (sizeof(x) / sizeof(x[0])) @@ -212,7 +206,7 @@ RtlInitUnicodeString(&KeyName, L"\Registry\MACHINE\Software"); InitializeObjectAttributes(&ObjectAttributes, &KeyName,
OBJ_CASE_INSENSITIVE | KMT_KERNEL_HANDLE,
Status = ZwOpenKey(&SoftwareHandle,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);@@ -225,7 +219,7 @@ RtlInitUnicodeString(&KeyName, L"RtlRegistryKmtestKey"); InitializeObjectAttributes(&ObjectAttributes, &KeyName,
OBJ_CASE_INSENSITIVE | KMT_KERNEL_HANDLE,
Status = ZwCreateKey(&KeyHandle,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, SoftwareHandle, NULL);
Oh? I'll need to add a test for that then, thanks.
What does Windows's RTL do, then? I know in XP/2003 it might just hand out user handles, but e.g. on Win7 that would cause verifier to bugcheck.
On 2015-09-20 20:51, Alex Ionescu wrote:
Actually, in XP, OBJ_KERNEL_HANDLE Did work, and gave you a kernel handle that you could never use. In Windows Vista, it returns a failure code. Not sure about 2003.
Best regards, Alex Ionescu
On Sat, Sep 19, 2015 at 2:46 PM, <tfaber@svn.reactos.org mailto:tfaber@svn.reactos.org> wrote:
Author: tfaber Date: Sat Sep 19 21:46:40 2015 New Revision: 69296 URL: http://svn.reactos.org/svn/reactos?rev=69296&view=rev Log: [KMTESTS] - Add missing OBJ_KERNEL_HANDLE - OBJ_KERNEL_HANDLE in user mode has no effect... no reason to make a define around it CORE-10207 Modified: trunk/rostests/kmtests/ntos_io/IoCreateFile.c trunk/rostests/kmtests/ntos_ke/KeEvent.c trunk/rostests/kmtests/rtl/RtlRegistry.c Modified: trunk/rostests/kmtests/ntos_io/IoCreateFile.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_io/IoCreateFile.c?rev=69296&r1=69295&r2=69296&view=diff ============================================================================== --- trunk/rostests/kmtests/ntos_io/IoCreateFile.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_io/IoCreateFile.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -454,7 +454,7 @@ ok_eq_hex(IoStatusBlock.Status, 0xFFFFFFFF); if (Status == STATUS_SUCCESS) { - ObCloseHandle(ParentHandle, KernelMode); + ObCloseHandle(ParentHandle, UserMode); } /* Attempt relative target open */ @@ -462,7 +462,7 @@ IoStatusBlock.Information = 0xFFFFFFFF; InitializeObjectAttributes(&ObjectAttributes, &SystemRoot, - OBJ_CASE_INSENSITIVE, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); Status = ZwOpenFile(&SystemRootHandle, GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE, @@ -478,7 +478,7 @@ IoStatusBlock.Information = 0xFFFFFFFF; InitializeObjectAttributes(&ObjectAttributes, &Regedit, - OBJ_CASE_INSENSITIVE, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, SystemRootHandle, NULL); Status = IoCreateFile(&ParentHandle, Modified: trunk/rostests/kmtests/ntos_ke/KeEvent.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_ke/KeEvent.c?rev=69296&r1=69295&r2=69296&view=diff ============================================================================== --- trunk/rostests/kmtests/ntos_ke/KeEvent.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_ke/KeEvent.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -155,6 +155,7 @@ PVOID ThreadObjects[RTL_NUMBER_OF(Threads)]; LONG State; PKTHREAD Thread = KeGetCurrentThread(); + OBJECT_ATTRIBUTES ObjectAttributes; LongTimeout.QuadPart = -100 * MILLISECOND; ShortTimeout.QuadPart = -1 * MILLISECOND; @@ -165,7 +166,12 @@ { Threads[i].Event = Event; Threads[i].Signal = FALSE; - Status = PsCreateSystemThread(&Threads[i].Handle, GENERIC_ALL, NULL, NULL, NULL, WaitForEventThread, &Threads[i]); + InitializeObjectAttributes(&ObjectAttributes, + NULL, + OBJ_KERNEL_HANDLE, + NULL, + NULL); + Status = PsCreateSystemThread(&Threads[i].Handle, GENERIC_ALL, &ObjectAttributes, NULL, NULL, WaitForEventThread, &Threads[i]); ok_eq_hex(Status, STATUS_SUCCESS); Status = ObReferenceObjectByHandle(Threads[i].Handle, SYNCHRONIZE, *PsThreadType, KernelMode, (PVOID *)&Threads[i].Thread, NULL); ok_eq_hex(Status, STATUS_SUCCESS); Modified: trunk/rostests/kmtests/rtl/RtlRegistry.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/rtl/RtlRegistry.c?rev=69296&r1=69295&r2=69296&view=diff ============================================================================== --- trunk/rostests/kmtests/rtl/RtlRegistry.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/rtl/RtlRegistry.c [iso-8859-1] Sat Sep 19 21:46:40 2015 @@ -7,12 +7,6 @@ #define KMT_EMULATE_KERNEL #include <kmt_test.h> - -#ifdef KMT_KERNEL_MODE -#define KMT_KERNEL_HANDLE OBJ_KERNEL_HANDLE -#else -#define KMT_KERNEL_HANDLE 0 -#endif #ifndef RTL_NUMBER_OF #define RTL_NUMBER_OF(x) (sizeof(x) / sizeof(x[0])) @@ -212,7 +206,7 @@ RtlInitUnicodeString(&KeyName, L"\\Registry\\MACHINE\\Software"); InitializeObjectAttributes(&ObjectAttributes, &KeyName, - OBJ_CASE_INSENSITIVE | KMT_KERNEL_HANDLE, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); Status = ZwOpenKey(&SoftwareHandle, @@ -225,7 +219,7 @@ RtlInitUnicodeString(&KeyName, L"RtlRegistryKmtestKey"); InitializeObjectAttributes(&ObjectAttributes, &KeyName, - OBJ_CASE_INSENSITIVE | KMT_KERNEL_HANDLE, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, SoftwareHandle, NULL); Status = ZwCreateKey(&KeyHandle,
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev