[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ros-diffs
Subject:    [ros-diffs] [ion] 13777: Reverting to 13775. Sorry for the mess.
From:       <ion () svn ! reactos ! com>
Date:       2005-02-28 17:40:19
Message-ID: 000001c51dbc$922d8100$6601a8c0 () penelope
[Download RAW message or body]

Reverting to 13775. Sorry for the mess. This is dedicated to Jane!
19934415.
Modified: trunk/reactos/config
Modified: trunk/reactos/drivers/storage/floppy/floppy.c
Modified: trunk/reactos/include/ddk/extypes.h
Modified: trunk/reactos/include/ddk/iotypes.h
Modified: trunk/reactos/include/ddk/ketypes.h
Modified: trunk/reactos/include/ntos/zwtypes.h
Modified: trunk/reactos/lib/ntdll/def/ntdll.def
Modified: trunk/reactos/ntoskrnl/Makefile
Modified: trunk/reactos/ntoskrnl/cm/registry.c
Deleted: trunk/reactos/ntoskrnl/ex/error.c
Modified: trunk/reactos/ntoskrnl/ex/event.c
Modified: trunk/reactos/ntoskrnl/ex/evtpair.c
Modified: trunk/reactos/ntoskrnl/ex/init.c
Modified: trunk/reactos/ntoskrnl/ex/mutant.c
Modified: trunk/reactos/ntoskrnl/ex/rundown.c
Modified: trunk/reactos/ntoskrnl/ex/sem.c
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
Modified: trunk/reactos/ntoskrnl/ex/timer.c
Modified: trunk/reactos/ntoskrnl/ex/work.c
Modified: trunk/reactos/ntoskrnl/include/internal/ex.h
Modified: trunk/reactos/ntoskrnl/include/internal/id.h
Modified: trunk/reactos/ntoskrnl/include/internal/io.h
Modified: trunk/reactos/ntoskrnl/include/internal/ke.h
Modified: trunk/reactos/ntoskrnl/include/internal/nls.h
Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h
Modified: trunk/reactos/ntoskrnl/include/internal/ps.h
Modified: trunk/reactos/ntoskrnl/io/bootlog.c
Modified: trunk/reactos/ntoskrnl/io/create.c
Modified: trunk/reactos/ntoskrnl/io/driver.c
Modified: trunk/reactos/ntoskrnl/io/iocomp.c
Modified: trunk/reactos/ntoskrnl/io/iomgr.c
Modified: trunk/reactos/ntoskrnl/io/wmi.c
Added: trunk/reactos/ntoskrnl/ke/alert.c
Modified: trunk/reactos/ntoskrnl/ke/apc.c
Modified: trunk/reactos/ntoskrnl/ke/bug.c
Modified: trunk/reactos/ntoskrnl/ke/catch.c
Added: trunk/reactos/ntoskrnl/ke/critical.c
Modified: trunk/reactos/ntoskrnl/ke/dpc.c
Added: trunk/reactos/ntoskrnl/ke/error.c
Modified: trunk/reactos/ntoskrnl/ke/event.c
Modified: trunk/reactos/ntoskrnl/ke/i386/tskswitch.S
Modified: trunk/reactos/ntoskrnl/ke/kthread.c
Modified: trunk/reactos/ntoskrnl/ke/main.c
Modified: trunk/reactos/ntoskrnl/ke/mutex.c
Modified: trunk/reactos/ntoskrnl/ke/queue.c
Modified: trunk/reactos/ntoskrnl/ke/sem.c
Modified: trunk/reactos/ntoskrnl/ke/timer.c
Modified: trunk/reactos/ntoskrnl/ke/wait.c
Modified: trunk/reactos/ntoskrnl/ntoskrnl.def
Modified: trunk/reactos/ntoskrnl/ntoskrnl.mc
Deleted: trunk/reactos/ntoskrnl/ob/wait.c
Modified: trunk/reactos/ntoskrnl/ps/kill.c
Modified: trunk/reactos/ntoskrnl/ps/process.c
Modified: trunk/reactos/ntoskrnl/ps/thread.c
Modified: trunk/reactos/ntoskrnl/rtl/nls.c
Modified: trunk/reactos/tools/nci/sysfuncs.lst
  _____  

Modified: trunk/reactos/config
--- trunk/reactos/config	2005-02-28 16:44:38 UTC (rev 13776)
+++ trunk/reactos/config	2005-02-28 17:40:15 UTC (rev 13777)
@@ -15,7 +15,7 @@

 # be optimze for. 
 #
 
-OARCH := pentium2
+OARCH := i486
 
 #
 # Whether to compile in the kernel debugger
@@ -30,7 +30,7 @@
 #
 # Whether to compile with optimizations
 #
-OPTIMIZED := 1
+OPTIMIZED := 0
 
 #
 # Whether to compile a multiprocessor or single processor version
  _____  

Modified: trunk/reactos/drivers/storage/floppy/floppy.c
--- trunk/reactos/drivers/storage/floppy/floppy.c	2005-02-28
16:44:38 UTC (rev 13776)
+++ trunk/reactos/drivers/storage/floppy/floppy.c	2005-02-28
17:40:15 UTC (rev 13777)
@@ -58,7 +58,7 @@

 
 /* Queue thread management */
 static KEVENT QueueThreadTerminate;
-static PVOID QueueThreadObject;
+static PVOID ThreadObject;
 
 
 static VOID NTAPI MotorStopDpcFunc(PKDPC UnusedDpc,
@@ -378,8 +378,8 @@
   KdPrint(("floppy: unloading\n"));
 
   KeSetEvent(&QueueThreadTerminate, 0, FALSE);
-  KeWaitForSingleObject(QueueThreadObject, Executive, KernelMode,
FALSE, 0);
-  ObDereferenceObject(QueueThreadObject);
+  KeWaitForSingleObject(ThreadObject, Executive, KernelMode, FALSE, 0);
+  ObDereferenceObject(ThreadObject);
 
   for(i = 0; i < gNumberOfControllers; i++)
     {
@@ -1152,7 +1152,7 @@
       return STATUS_INSUFFICIENT_RESOURCES;
     }
 
-  if(ObReferenceObjectByHandle(ThreadHandle, STANDARD_RIGHTS_ALL, NULL,
KernelMode, &QueueThreadObject, NULL) != STATUS_SUCCESS)
+  if(ObReferenceObjectByHandle(ThreadHandle, STANDARD_RIGHTS_ALL, NULL,
KernelMode, &ThreadObject, NULL) != STATUS_SUCCESS)
     {
       KdPrint(("floppy: Unable to reference returned thread handle;
failing init\n"));
       return STATUS_UNSUCCESSFUL;
  _____  

Modified: trunk/reactos/include/ddk/extypes.h
--- trunk/reactos/include/ddk/extypes.h	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/include/ddk/extypes.h	2005-02-28 17:40:15 UTC (rev
13777)
@@ -30,23 +30,6 @@

     MaximumWorkQueue
 } WORK_QUEUE_TYPE;
 
-typedef struct _EX_QUEUE_WORKER_INFO {
-    UCHAR QueueDisabled:1;
-    UCHAR MakeThreadsAsNecessary:1;
-    UCHAR WaitMode:1;
-    ULONG WorkerCount:29;
-} EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO;
-
-typedef struct _EX_WORK_QUEUE {
-    KQUEUE WorkerQueue;
-    ULONG DynamicThreadCount;
-    ULONG WorkItemsProcessed;
-    ULONG WorkItemsProcessedLastPass;
-    ULONG QueueDepthLastPass;
-    EX_QUEUE_WORKER_INFO Info;    
-} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
-
-
 typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
 
 typedef struct _OWNER_ENTRY
@@ -257,10 +240,6 @@
 		      PVOID Argument1,
 		      PVOID Argument2);
 
-extern struct _OBJECT_TYPE EXPORTED *ExMutantObjectType;
-extern struct _OBJECT_TYPE EXPORTED *ExSemaphoreObjectType;
-extern struct _OBJECT_TYPE EXPORTED *ExTimerType;
-
 #endif /* __INCLUDE_DDK_EXTYPES_H */
 
 /* EOF */
  _____  

Modified: trunk/reactos/include/ddk/iotypes.h
--- trunk/reactos/include/ddk/iotypes.h	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/include/ddk/iotypes.h	2005-02-28 17:40:15 UTC (rev
13777)
@@ -886,8 +886,6 @@

 #endif
 
 #define IO_TYPE_DRIVER 4L
-#define IO_TYPE_FILE 0x0F5L
-
 #define DRVO_UNLOAD_INVOKED 0x1L
 #define DRVO_LEGACY_DRIVER  0x2L
 #define DRVO_BUILTIN_DRIVER 0x4L
  _____  

Modified: trunk/reactos/include/ddk/ketypes.h
--- trunk/reactos/include/ddk/ketypes.h	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/include/ddk/ketypes.h	2005-02-28 17:40:15 UTC (rev
13777)
@@ -36,34 +36,23 @@

 
 struct _DISPATCHER_HEADER;
 
-typedef enum _KOBJECTS {
-   EventNotificationObject = 0,
-   EventSynchronizationObject = 1,
-   MutantObject = 2,
-   ProcessObject = 3,
-   QueueObject = 4,
-   SemaphoreObject = 5,
-   ThreadObject = 6,
-   GateObject = 7,
-   TimerNotificationObject = 8,
-   TimerSynchronizationObject = 9,
-   Spare2Object = 10,
-   Spare3Object = 11,
-   Spare4Object = 12,
-   Spare5Object = 13,
-   Spare6Object = 14,
-   Spare7Object = 15,
-   Spare8Object = 16,
-   Spare9Object = 17,
-   ApcObject = 18,
-   DpcObject = 19,
-   DeviceQueueObject = 20,
-   EventPairObject = 21,
-   InterruptObject = 22,
-   ProfileObject = 23,
-   ThreadedDpcObject = 24,
-   MaximumKernelObject = 25
-} KOBJECTS;
+typedef enum _KERNEL_OBJECTS {
+	KNotificationEvent = 0,
+	KSynchronizationEvent = 1,
+	KMutant = 2,
+	KProcess = 3,
+	KQueue = 4,
+	KSemaphore = 5,
+	KThread = 6,
+	KNotificationTimer = 8,
+	KSynchronizationTimer = 9,
+	KApc = 18,
+	KDpc = 19,
+	KDeviceQueue = 20,
+	KEventPair = 21,
+	KInterrupt = 22,
+	KProfile = 23
+} KERNEL_OBJECTS;
 
 #include <pshpack1.h>
 
  _____  

Modified: trunk/reactos/include/ntos/zwtypes.h
--- trunk/reactos/include/ntos/zwtypes.h	2005-02-28 16:44:38 UTC
(rev 13776)
+++ trunk/reactos/include/ntos/zwtypes.h	2005-02-28 17:40:15 UTC
(rev 13777)
@@ -1262,9 +1262,9 @@

 
 typedef struct _MUTANT_BASIC_INFORMATION
 {
-  LONG CurrentCount;
-  BOOLEAN OwnedByCaller;
-  BOOLEAN AbandonedState;
+  LONG Count;
+  BOOLEAN Owned;
+  BOOLEAN Abandoned;
 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
 
 
  _____  

Modified: trunk/reactos/lib/ntdll/def/ntdll.def
--- trunk/reactos/lib/ntdll/def/ntdll.def	2005-02-28 16:44:38 UTC
(rev 13776)
+++ trunk/reactos/lib/ntdll/def/ntdll.def	2005-02-28 17:40:15 UTC
(rev 13777)
@@ -225,6 +225,7 @@

 NtSetEvent@8
 NtSetHighEventPair@4
 NtSetHighWaitLowEventPair@4
+NtSetHighWaitLowThread@0
 NtSetInformationFile@20
 NtSetInformationJobObject@16
 NtSetInformationKey@16
@@ -237,6 +238,7 @@
 NtSetLdtEntries@24
 NtSetLowEventPair@4
 NtSetLowWaitHighEventPair@4
+NtSetLowWaitHighThread@0
 NtSetSecurityObject@12
 NtSetSystemEnvironmentValue@8
 NtSetSystemInformation@12
@@ -847,6 +849,7 @@
 ZwSetEvent@8
 ZwSetHighEventPair@4
 ZwSetHighWaitLowEventPair@4
+ZwSetHighWaitLowThread@0
 ZwSetInformationFile@20
 ZwSetInformationKey@16
 ZwSetInformationObject@16
@@ -858,6 +861,7 @@
 ZwSetLdtEntries@24
 ZwSetLowEventPair@4
 ZwSetLowWaitHighEventPair@4
+ZwSetLowWaitHighThread@0
 ZwSetSecurityObject@12
 ZwSetSystemEnvironmentValue@8
 ZwSetSystemInformation@12
  _____  

Modified: trunk/reactos/ntoskrnl/Makefile
--- trunk/reactos/ntoskrnl/Makefile	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/ntoskrnl/Makefile	2005-02-28 17:40:15 UTC (rev
13777)
@@ -101,8 +101,10 @@

 	ke/bug.o \
 	ke/catch.o \
 	ke/clock.o \
+	ke/critical.o \
 	ke/dpc.o \
 	ke/device.o \
+	ke/error.o \
 	ke/event.o \
 	ke/kqueue.o \
 	ke/kthread.o \
@@ -116,6 +118,7 @@
 	ke/spinlock.o \
 	ke/timer.o \
 	ke/wait.o \
+	ke/alert.o
 
 # Memory Manager (Mm)
 OBJECTS_MM = \
@@ -216,8 +219,7 @@
 	ob/object.o \
 	ob/sdcache.o \
 	ob/security.o \
-	ob/symlink.o \
-	ob/wait.o
+	ob/symlink.o
 
 # Process Manager (Ps)
 OBJECTS_PS = \
@@ -240,7 +242,6 @@
 OBJECTS_EX = \
 	ex/btree.o \
 	ex/callback.o \
-	ex/error.o \
 	ex/event.o \
 	ex/evtpair.o \
 	ex/fmutex.o \
  _____  

Modified: trunk/reactos/ntoskrnl/cm/registry.c
--- trunk/reactos/ntoskrnl/cm/registry.c	2005-02-28 16:44:38 UTC
(rev 13776)
+++ trunk/reactos/ntoskrnl/cm/registry.c	2005-02-28 17:40:15 UTC
(rev 13777)
@@ -241,30 +241,7 @@

   CmiCheckByName(Verbose, L"User");
 }
 
-VOID
-INIT_FUNCTION
-STDCALL
-CmInitHives(BOOLEAN SetupBoot)
-{
-    PCHAR BaseAddress;
-    
-    /* Load Registry Hives */
-    BaseAddress = (PCHAR)CachedModules[SystemRegistry]->ModStart;
-    CmImportSystemHive(BaseAddress,
-                       CachedModules[SystemRegistry]->ModEnd -
(ULONG_PTR)BaseAddress);
-    
-    BaseAddress = (PCHAR)CachedModules[HardwareRegistry]->ModStart;
-    CmImportHardwareHive(BaseAddress,
-                         CachedModules[HardwareRegistry]->ModEnd -
(ULONG_PTR)BaseAddress);
-    
 
-    /* Create dummy keys if no hardware hive was found */
-    CmImportHardwareHive (NULL, 0);
-
-    /* Initialize volatile registry settings */
-    if (SetupBoot == FALSE) CmInit2((PCHAR)KeLoaderBlock.CommandLine);
-}   
-
 VOID INIT_FUNCTION
 CmInitializeRegistry(VOID)
 {
  _____  

Deleted: trunk/reactos/ntoskrnl/ex/error.c
--- trunk/reactos/ntoskrnl/ex/error.c	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/ntoskrnl/ex/error.c	2005-02-28 17:40:15 UTC (rev
13777)
@@ -1,163 +0,0 @@

-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/ex/error.c
- * PURPOSE:         Error Functions and Status/Exception
Dispatching/Raising
- *
- * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net) - Created File
- */
-
-/* INCLUDES
*****************************************************************/
-
-#include <ntoskrnl.h>
-#define NDEBUG
-#include <internal/debug.h>
-
-/* GLOBALS
****************************************************************/
-
-BOOLEAN ExReadyForErrors = FALSE;
-PEPORT ExpDefaultErrorPort = NULL;
-PEPROCESS ExpDefaultErrorPortProcess = NULL;
-
-/* FUNCTIONS
****************************************************************/
-
-/*
- * @implemented
- */
-VOID 
-STDCALL
-ExRaiseAccessViolation(VOID)
-{
-    /* Raise the Right Status */
-    ExRaiseStatus (STATUS_ACCESS_VIOLATION);
-}
-
-/*
- * @implemented
- */
-VOID
-STDCALL
-ExRaiseDatatypeMisalignment (VOID)
-{
-    /* Raise the Right Status */
-    ExRaiseStatus (STATUS_DATATYPE_MISALIGNMENT);
-}
-
-/*
- * @implemented
- */
-VOID 
-STDCALL
-ExRaiseStatus(IN NTSTATUS Status)
-{
-    EXCEPTION_RECORD ExceptionRecord;
-
-    DPRINT("ExRaiseStatus(%x)\n", Status);
-
-    /* Set up an Exception Record */
-    ExceptionRecord.ExceptionRecord = NULL;
-    ExceptionRecord.NumberParameters = 0;
-    ExceptionRecord.ExceptionCode = Status;
-    ExceptionRecord.ExceptionFlags = 0;
-    
-    /* Call the Rtl Function */
-    RtlRaiseException(&ExceptionRecord);
-}
-
-/*
- * @implemented
- */
-VOID
-STDCALL
-ExRaiseException (PEXCEPTION_RECORD ExceptionRecord)
-{
-    /* Call the Rtl function */
-    RtlRaiseException(ExceptionRecord);
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-STDCALL
-ExSystemExceptionFilter(VOID)
-{
-    return KeGetPreviousMode() != KernelMode ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-ExRaiseHardError(IN NTSTATUS ErrorStatus,
-                 IN ULONG NumberOfParameters, 
-                 IN PUNICODE_STRING UnicodeStringParameterMask
OPTIONAL,
-                 IN PVOID *Parameters, 
-                 IN HARDERROR_RESPONSE_OPTION ResponseOption, 
-                 OUT PHARDERROR_RESPONSE Response)
-{
-    UNIMPLEMENTED;
-}
-
-NTSTATUS 
-STDCALL 
-NtRaiseHardError(IN NTSTATUS ErrorStatus,
-                 IN ULONG NumberOfParameters,
-                 IN PUNICODE_STRING UnicodeStringParameterMask
OPTIONAL,
-                 IN PVOID *Parameters,
-                 IN HARDERROR_RESPONSE_OPTION ResponseOption,
-                 OUT PHARDERROR_RESPONSE Response)
-{
-    DPRINT1("Hard error %x\n", ErrorStatus);
-  
-    /* Call the Executive Function (WE SHOULD PUT SEH HERE/CAPTURE!) */
-    ExRaiseHardError(ErrorStatus,
-                     NumberOfParameters,
-                     UnicodeStringParameterMask,
-                     Parameters,
-                     ResponseOption,
-                     Response);
-  
-    /* Return Success */
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS 
-STDCALL 
-NtSetDefaultHardErrorPort(IN HANDLE PortHandle)
-{
-    
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    NTSTATUS Status = STATUS_UNSUCCESSFUL;
-  
-    /* Check if we have the Privilege */
-    if(!SeSinglePrivilegeCheck(SeTcbPrivilege, PreviousMode)) {
-        
-        DPRINT1("NtSetDefaultHardErrorPort: Caller requires the
SeTcbPrivilege privilege!\n");
-        return STATUS_PRIVILEGE_NOT_HELD;
-    }
-  
-    /* Only called once during bootup, make sure we weren't called yet
*/
-    if(!ExReadyForErrors) {
-        
-        Status = ObReferenceObjectByHandle(PortHandle,
-                                           0,
-                                           LpcPortObjectType,
-                                           PreviousMode,
-
(PVOID*)&ExpDefaultErrorPort,
-                                           NULL);
-        
-        /* Check for Success */
-        if(NT_SUCCESS(Status)) {
-            
-            /* Save the data */
-            ExpDefaultErrorPortProcess = PsGetCurrentProcess();
-            ExReadyForErrors = TRUE;
-        }
-    }
-  
-    return Status;
-}
-
-/* EOF */
  _____  

Modified: trunk/reactos/ntoskrnl/ex/event.c
--- trunk/reactos/ntoskrnl/ex/event.c	2005-02-28 16:44:38 UTC (rev
13776)
+++ trunk/reactos/ntoskrnl/ex/event.c	2005-02-28 17:40:15 UTC (rev
13777)
@@ -19,286 +19,300 @@

 POBJECT_TYPE EXPORTED ExEventObjectType = NULL;
 
 static GENERIC_MAPPING ExpEventMapping = {
-    STANDARD_RIGHTS_READ | SYNCHRONIZE | EVENT_QUERY_STATE,
-    STANDARD_RIGHTS_WRITE | SYNCHRONIZE | EVENT_MODIFY_STATE,
-    STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | EVENT_QUERY_STATE,
-    EVENT_ALL_ACCESS};
+	STANDARD_RIGHTS_READ | SYNCHRONIZE | EVENT_QUERY_STATE,
+	STANDARD_RIGHTS_WRITE | SYNCHRONIZE | EVENT_MODIFY_STATE,
+	STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | EVENT_QUERY_STATE,
+	EVENT_ALL_ACCESS};
 
-static const INFORMATION_CLASS_INFO ExEventInfoClass[] = {
-    
-    /* EventBasicInformation */
-    ICI_SQ_SAME( sizeof(EVENT_BASIC_INFORMATION), sizeof(ULONG),
ICIF_QUERY),
+static const INFORMATION_CLASS_INFO ExEventInfoClass[] =
+{
+  ICI_SQ_SAME( sizeof(EVENT_BASIC_INFORMATION), sizeof(ULONG),
ICIF_QUERY ), /* EventBasicInformation */
 };
 
 /* FUNCTIONS
*****************************************************************/
 
-VOID 
-INIT_FUNCTION
+NTSTATUS STDCALL
+NtpCreateEvent(PVOID ObjectBody,
+	       PVOID Parent,
+	       PWSTR RemainingPath,
+	       POBJECT_ATTRIBUTES ObjectAttributes)
+{
+  DPRINT("NtpCreateEvent(ObjectBody %x, Parent %x, RemainingPath
%S)\n",
+	 ObjectBody, Parent, RemainingPath);
+
+  if (RemainingPath != NULL && wcschr(RemainingPath+1, '\\') != NULL)
+    {
+      return(STATUS_UNSUCCESSFUL);
+    }
+
+  return(STATUS_SUCCESS);
+}
+
+
+VOID INIT_FUNCTION
 ExpInitializeEventImplementation(VOID)
 {
-    /* Create the Event Object Type */
-    ExEventObjectType =
ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
-    RtlpCreateUnicodeString(&ExEventObjectType->TypeName, L"Event",
NonPagedPool);
-    ExEventObjectType->Tag = TAG('E', 'V', 'T', 'T');
-    ExEventObjectType->PeakObjects = 0;
-    ExEventObjectType->PeakHandles = 0;
-    ExEventObjectType->TotalObjects = 0;
-    ExEventObjectType->TotalHandles = 0;
-    ExEventObjectType->PagedPoolCharge = 0;
-    ExEventObjectType->NonpagedPoolCharge = sizeof(KEVENT);
-    ExEventObjectType->Mapping = &ExpEventMapping;
-    ExEventObjectType->Dump = NULL;
-    ExEventObjectType->Open = NULL;
-    ExEventObjectType->Close = NULL;
-    ExEventObjectType->Delete = NULL;
-    ExEventObjectType->Parse = NULL;
-    ExEventObjectType->Security = NULL;
-    ExEventObjectType->QueryName = NULL;
-    ExEventObjectType->OkayToClose = NULL;
-    ExEventObjectType->Create = NULL;
-    ExEventObjectType->DuplicationNotify = NULL;
-    ObpCreateTypeObject(ExEventObjectType);
+   ExEventObjectType =
ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
+   
+   RtlpCreateUnicodeString(&ExEventObjectType->TypeName, L"Event",
NonPagedPool);
+   
+   ExEventObjectType->Tag = TAG('E', 'V', 'T', 'T');
+   ExEventObjectType->PeakObjects = 0;
+   ExEventObjectType->PeakHandles = 0;
+   ExEventObjectType->TotalObjects = 0;
+   ExEventObjectType->TotalHandles = 0;
+   ExEventObjectType->PagedPoolCharge = 0;
+   ExEventObjectType->NonpagedPoolCharge = sizeof(KEVENT);
+   ExEventObjectType->Mapping = &ExpEventMapping;
+   ExEventObjectType->Dump = NULL;
+   ExEventObjectType->Open = NULL;
+   ExEventObjectType->Close = NULL;
+   ExEventObjectType->Delete = NULL;
+   ExEventObjectType->Parse = NULL;
+   ExEventObjectType->Security = NULL;
+   ExEventObjectType->QueryName = NULL;
+   ExEventObjectType->OkayToClose = NULL;
+   ExEventObjectType->Create = NtpCreateEvent;
+   ExEventObjectType->DuplicationNotify = NULL;
+
+   ObpCreateTypeObject(ExEventObjectType);
 }
 
+
 /*
  * @implemented
  */
-NTSTATUS 
-STDCALL
+NTSTATUS STDCALL
 NtClearEvent(IN HANDLE EventHandle)
 {
-    PKEVENT Event;
-    NTSTATUS Status;
-    
-    PAGED_CODE();
+   PKEVENT Event;
+   NTSTATUS Status;
    
-    /* Reference the Object */
+   PAGED_CODE();
+   
    Status = ObReferenceObjectByHandle(EventHandle,
-                                      EVENT_MODIFY_STATE,
-                                      ExEventObjectType,
-                                      ExGetPreviousMode(),
-                                      (PVOID*)&Event,
-                                      NULL);
+				      EVENT_MODIFY_STATE,
+				      ExEventObjectType,
+				      ExGetPreviousMode(),
+				      (PVOID*)&Event,
+				      NULL);
+   if(NT_SUCCESS(Status))
+   {
+     KeClearEvent(Event);
+     ObDereferenceObject(Event);
+   }
    
-   /* Check for Success */
-    if(NT_SUCCESS(Status)) {
-        
-        /* Clear the Event and Dereference */
-        KeClearEvent(Event);
-        ObDereferenceObject(Event);
-    }
-   
-    /* Return Status */
-    return Status;
+   return Status;
 }
 
 
 /*
  * @implemented
  */
-NTSTATUS 
-STDCALL
+NTSTATUS STDCALL
 NtCreateEvent(OUT PHANDLE EventHandle,
-              IN ACCESS_MASK DesiredAccess,
-              IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
-              IN EVENT_TYPE EventType,
-              IN BOOLEAN InitialState)
+	      IN ACCESS_MASK DesiredAccess,
+	      IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
+	      IN EVENT_TYPE EventType,
+	      IN BOOLEAN InitialState)
 {
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    PKEVENT Event;
-    HANDLE hEvent;
-    NTSTATUS Status = STATUS_SUCCESS;
+   KPROCESSOR_MODE PreviousMode;
+   PKEVENT Event;
+   HANDLE hEvent;
+   NTSTATUS Status = STATUS_SUCCESS;
    
-    PAGED_CODE();
+   PAGED_CODE();
  
-    /* Check Output Safety */
-    if(PreviousMode == UserMode) {
-        
-        _SEH_TRY {
-            
-            ProbeForWrite(EventHandle,
-                          sizeof(HANDLE),
-                          sizeof(ULONG));
-        } _SEH_HANDLE {
-            
-            Status = _SEH_GetExceptionCode();
-        
-        } _SEH_END;
+   PreviousMode = ExGetPreviousMode();
+ 
+   if(PreviousMode == UserMode)
+   {
+     _SEH_TRY
+     {
+       ProbeForWrite(EventHandle,
+                     sizeof(HANDLE),
+                     sizeof(ULONG));
+     }
+     _SEH_HANDLE
+     {
+       Status = _SEH_GetExceptionCode();
+     }
+     _SEH_END;
      
-        if(!NT_SUCCESS(Status)) return Status;
-    }
-    
-    /* Create the Object */
-    Status = ObCreateObject(PreviousMode,
-                            ExEventObjectType,
-                            ObjectAttributes,
-                            PreviousMode,
-                            NULL,
-                            sizeof(KEVENT),
-                            0,
-                            0,
-                            (PVOID*)&Event);
-    
-    /* Check for Success */
-    if(NT_SUCCESS(Status)) {
-        
-        /* Initalize the Event */
-        KeInitializeEvent(Event,
-                          EventType,
-                          InitialState);
-        
-        /* Insert it */
-        Status = ObInsertObject((PVOID)Event,
-                                 NULL,
-                                 DesiredAccess,
-                                 0,
-                                 NULL,
-                                 &hEvent);
-        ObDereferenceObject(Event);
+     if(!NT_SUCCESS(Status))
+     {
+       return Status;
+     }
+   }
  
-        /* Check for success and return handle */
-        if(NT_SUCCESS(Status)) {
-            
-            _SEH_TRY {
-                
-                *EventHandle = hEvent;
-            
-            } _SEH_HANDLE {
-                
-                Status = _SEH_GetExceptionCode();
-                
-            } _SEH_END;
-        }
-    }
-
-    /* Return Status */
-    return Status;
+   Status = ObCreateObject(PreviousMode,
+                           ExEventObjectType,
+                           ObjectAttributes,
+                           PreviousMode,
+                           NULL,
+                           sizeof(KEVENT),
+                           0,
+                           0,
+                           (PVOID*)&Event);
+   if(NT_SUCCESS(Status))
+   {
+     KeInitializeEvent(Event,
+                       EventType,
+                       InitialState);
+ 
+ 
+     Status = ObInsertObject((PVOID)Event,
+                             NULL,
+                             DesiredAccess,
+                             0,
+                             NULL,
+                             &hEvent);
+     ObDereferenceObject(Event);
+ 
+     if(NT_SUCCESS(Status))
+     {
+       _SEH_TRY
+       {
+         *EventHandle = hEvent;
+       }
+       _SEH_HANDLE
+       {
+         Status = _SEH_GetExceptionCode();
+       }
+       _SEH_END;
+     }
+   }
+ 
+   return Status;
 }
 
+
 /*
  * @implemented
  */
-NTSTATUS 
-STDCALL
+NTSTATUS STDCALL
 NtOpenEvent(OUT PHANDLE EventHandle,
-            IN ACCESS_MASK DesiredAccess,
-            IN POBJECT_ATTRIBUTES ObjectAttributes)
+	    IN ACCESS_MASK DesiredAccess,
+	    IN POBJECT_ATTRIBUTES ObjectAttributes)
 {
-    HANDLE hEvent;
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    NTSTATUS Status = STATUS_SUCCESS;
+   HANDLE hEvent;
+   KPROCESSOR_MODE PreviousMode;
+   NTSTATUS Status = STATUS_SUCCESS;
    
-    PAGED_CODE();
-    DPRINT("NtOpenEvent(0x%x, 0x%x, 0x%x)\n", EventHandle,
DesiredAccess, ObjectAttributes);
+   PAGED_CODE();
+   
+   DPRINT("NtOpenEvent(0x%x, 0x%x, 0x%x)\n", EventHandle,
DesiredAccess, ObjectAttributes);
 
-    /* Check Output Safety */
-    if(PreviousMode == UserMode) {
-        
-        _SEH_TRY {
-            
-            ProbeForWrite(EventHandle,
-                          sizeof(HANDLE),
-                          sizeof(ULONG));
-        } _SEH_HANDLE {
-            
-            Status = _SEH_GetExceptionCode();
-        
-        } _SEH_END;
+   PreviousMode = ExGetPreviousMode();
+   
+   if(PreviousMode == UserMode)
+   {
+     _SEH_TRY
+     {
+       ProbeForWrite(EventHandle,
+                     sizeof(HANDLE),
+                     sizeof(ULONG));
+     }
+     _SEH_HANDLE
+     {
+       Status = _SEH_GetExceptionCode();
+     }
+     _SEH_END;
      
-        if(!NT_SUCCESS(Status)) return Status;
-    }
-    
-    /* Open the Object */
-    Status = ObOpenObjectByName(ObjectAttributes,
-                                ExEventObjectType,
-                                NULL,
-                                PreviousMode,
-                                DesiredAccess,
-                                NULL,
-                                &hEvent);
+     if(!NT_SUCCESS(Status))
+     {
+       return Status;
+     }
+   }
+
+   Status = ObOpenObjectByName(ObjectAttributes,
+			       ExEventObjectType,
+			       NULL,
+			       PreviousMode,
+			       DesiredAccess,
+			       NULL,
+			       &hEvent);
              
-    /* Check for success and return handle */
-    if(NT_SUCCESS(Status)) {
-            
-        _SEH_TRY {
-            
-            *EventHandle = hEvent;
-                
-        } _SEH_HANDLE {
-            
-            Status = _SEH_GetExceptionCode();
-            
-        } _SEH_END;
-    }
+   if(NT_SUCCESS(Status))
+   {
+     _SEH_TRY
+     {
+       *EventHandle = hEvent;
+     }
+     _SEH_HANDLE
+     {
+       Status = _SEH_GetExceptionCode();
+     }
+     _SEH_END;
+   }
    
-    /* Return status */
-    return Status;
+   return Status;
 }
 
+
 /*
  * @implemented
  */
-NTSTATUS 
-STDCALL
+NTSTATUS STDCALL
 NtPulseEvent(IN HANDLE EventHandle,
-             OUT PLONG PreviousState OPTIONAL)
+	     OUT PLONG PreviousState  OPTIONAL)
 {
-    PKEVENT Event;
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    NTSTATUS Status = STATUS_SUCCESS;
+   PKEVENT Event;
+   KPROCESSOR_MODE PreviousMode;
+   NTSTATUS Status = STATUS_SUCCESS;
    
-    PAGED_CODE();
-    DPRINT("NtPulseEvent(EventHandle 0%x PreviousState 0%x)\n",
-            EventHandle, PreviousState);
+   PAGED_CODE();
 
-    /* Check buffer validity */
-    if(PreviousState && PreviousMode == UserMode) {
-        
-        _SEH_TRY {
-            
-            ProbeForWrite(PreviousState,
-                          sizeof(LONG),
-                          sizeof(ULONG));
-         } _SEH_HANDLE {
-             
-            Status = _SEH_GetExceptionCode();
-            
-        } _SEH_END;
+   DPRINT("NtPulseEvent(EventHandle 0%x PreviousState 0%x)\n",
+	  EventHandle, PreviousState);
 
-        if(!NT_SUCCESS(Status)) return Status;
-    }
-    
-    /* Open the Object */
-    Status = ObReferenceObjectByHandle(EventHandle,
-                                       EVENT_MODIFY_STATE,
-                                       ExEventObjectType,
-                                       PreviousMode,
-                                       (PVOID*)&Event,
-                                       NULL);
-    
-    /* Check for success */
-    if(NT_SUCCESS(Status)) {
-        
-        /* Pulse the Event */
-        LONG Prev = KePulseEvent(Event, EVENT_INCREMENT, FALSE);
-        ObDereferenceObject(Event);
+   PreviousMode = ExGetPreviousMode();
+   
+   if(PreviousState != NULL && PreviousMode == UserMode)
+   {
+     _SEH_TRY
+     {
+       ProbeForWrite(PreviousState,
+                     sizeof(LONG),
+                     sizeof(ULONG));
+     }
+     _SEH_HANDLE
+     {
+       Status = _SEH_GetExceptionCode();
+     }
+     _SEH_END;
      
-        /* Return it */        
-        if(PreviousState) {
-            
-            _SEH_TRY {
-                
-                *PreviousState = Prev;
-            
-            } _SEH_HANDLE {
-                
-                Status = _SEH_GetExceptionCode();
-            
-            } _SEH_END;
-        }
+     if(!NT_SUCCESS(Status))
+     {
+       return Status;
+     }
    }
 
-   /* Return Status */
+   Status = ObReferenceObjectByHandle(EventHandle,
+				      EVENT_MODIFY_STATE,
+				      ExEventObjectType,
+				      PreviousMode,
+				      (PVOID*)&Event,
+				      NULL);
+   if(NT_SUCCESS(Status))
+   {
+     LONG Prev = KePulseEvent(Event, EVENT_INCREMENT, FALSE);
+     ObDereferenceObject(Event);
+     
+     if(PreviousState != NULL)
+     {
+       _SEH_TRY
+       {
+         *PreviousState = Prev;
+       }
+       _SEH_HANDLE
+       {
+         Status = _SEH_GetExceptionCode();
+       }
+       _SEH_END;
+     }
+   }
+
    return Status;
 }
 
@@ -306,202 +320,230 @@
 /*
  * @implemented
  */
-NTSTATUS 
-STDCALL
+NTSTATUS STDCALL
 NtQueryEvent(IN HANDLE EventHandle,
-             IN EVENT_INFORMATION_CLASS EventInformationClass,
[truncated at 1000 lines; 13561 more skipped] 

[Attachment #3 (text/html)]

<html>
<head>
<style>
<!--
body { background-color:#ffffff }
.file { border:1px solid #eeeeee; margin-top:1em; margin-bottom:1em }
.pathname { font-family:monospace; float:right }
.fileheader { margin-bottom:.5em }
.diff { margin:0 }
.tasklist { padding:4px; border:1px dashed #000000; margin-top:1em }
.tasklist ul { margin-top:0; margin-bottom:0 }
tr.alt { background-color:#eeeeee }
#added { background-color:#ddffdd }
#addedchars { background-color:#99ff99; font-weight:bolder }
tr.alt #added { background-color:#ccf7cc }
#removed { background-color:#ffdddd }
#removedchars { background-color:#ff9999; font-weight:bolder }
tr.alt #removed { background-color:#f7cccc }
#info { color:#888888 }
#context { background-color:#eeeeee }
td {padding-left:.3em; padding-right:.3em }
tr.head { border-bottom-width:1px; border-bottom-style:solid }
tr.head td { padding:0; padding-top:.2em }
.task { background-color:#ffff00 }
.comment { padding:4px; border:1px dashed #000000; background-color:#ffffdd }
.error { color:red }
hr { border-width:0px; height:2px; background:black }
-->
</style>
</head>
<body>
<pre class="comment">Reverting to 13775. Sorry for the mess. This is dedicated to \
                Jane! 19934415.</pre><pre class="diff" id="context">Modified: \
                trunk/reactos/config
Modified: trunk/reactos/drivers/storage/floppy/floppy.c
Modified: trunk/reactos/include/ddk/extypes.h
Modified: trunk/reactos/include/ddk/iotypes.h
Modified: trunk/reactos/include/ddk/ketypes.h
Modified: trunk/reactos/include/ntos/zwtypes.h
Modified: trunk/reactos/lib/ntdll/def/ntdll.def
Modified: trunk/reactos/ntoskrnl/Makefile
Modified: trunk/reactos/ntoskrnl/cm/registry.c
</pre><pre class="diff" id="removed">Deleted: trunk/reactos/ntoskrnl/ex/error.c
</pre><pre class="diff" id="context">Modified: trunk/reactos/ntoskrnl/ex/event.c
Modified: trunk/reactos/ntoskrnl/ex/evtpair.c
Modified: trunk/reactos/ntoskrnl/ex/init.c
Modified: trunk/reactos/ntoskrnl/ex/mutant.c
Modified: trunk/reactos/ntoskrnl/ex/rundown.c
Modified: trunk/reactos/ntoskrnl/ex/sem.c
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
Modified: trunk/reactos/ntoskrnl/ex/timer.c
Modified: trunk/reactos/ntoskrnl/ex/work.c
Modified: trunk/reactos/ntoskrnl/include/internal/ex.h
Modified: trunk/reactos/ntoskrnl/include/internal/id.h
Modified: trunk/reactos/ntoskrnl/include/internal/io.h
Modified: trunk/reactos/ntoskrnl/include/internal/ke.h
Modified: trunk/reactos/ntoskrnl/include/internal/nls.h
Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h
Modified: trunk/reactos/ntoskrnl/include/internal/ps.h
Modified: trunk/reactos/ntoskrnl/io/bootlog.c
Modified: trunk/reactos/ntoskrnl/io/create.c
Modified: trunk/reactos/ntoskrnl/io/driver.c
Modified: trunk/reactos/ntoskrnl/io/iocomp.c
Modified: trunk/reactos/ntoskrnl/io/iomgr.c
Modified: trunk/reactos/ntoskrnl/io/wmi.c
</pre><pre class="diff" id="added">Added: trunk/reactos/ntoskrnl/ke/alert.c
</pre><pre class="diff" id="context">Modified: trunk/reactos/ntoskrnl/ke/apc.c
Modified: trunk/reactos/ntoskrnl/ke/bug.c
Modified: trunk/reactos/ntoskrnl/ke/catch.c
</pre><pre class="diff" id="added">Added: trunk/reactos/ntoskrnl/ke/critical.c
</pre><pre class="diff" id="context">Modified: trunk/reactos/ntoskrnl/ke/dpc.c
</pre><pre class="diff" id="added">Added: trunk/reactos/ntoskrnl/ke/error.c
</pre><pre class="diff" id="context">Modified: trunk/reactos/ntoskrnl/ke/event.c
Modified: trunk/reactos/ntoskrnl/ke/i386/tskswitch.S
Modified: trunk/reactos/ntoskrnl/ke/kthread.c
Modified: trunk/reactos/ntoskrnl/ke/main.c
Modified: trunk/reactos/ntoskrnl/ke/mutex.c
Modified: trunk/reactos/ntoskrnl/ke/queue.c
Modified: trunk/reactos/ntoskrnl/ke/sem.c
Modified: trunk/reactos/ntoskrnl/ke/timer.c
Modified: trunk/reactos/ntoskrnl/ke/wait.c
Modified: trunk/reactos/ntoskrnl/ntoskrnl.def
Modified: trunk/reactos/ntoskrnl/ntoskrnl.mc
</pre><pre class="diff" id="removed">Deleted: trunk/reactos/ntoskrnl/ob/wait.c
</pre><pre class="diff" id="context">Modified: trunk/reactos/ntoskrnl/ps/kill.c
Modified: trunk/reactos/ntoskrnl/ps/process.c
Modified: trunk/reactos/ntoskrnl/ps/thread.c
Modified: trunk/reactos/ntoskrnl/rtl/nls.c
Modified: trunk/reactos/tools/nci/sysfuncs.lst
</pre><hr /><div class="file">
<div class="fileheader"><big><b>Modified: trunk/reactos/config</b></big></div>
<pre class="diff"><small id="info">--- trunk/reactos/config	2005-02-28 16:44:38 UTC \
                (rev 13776)
+++ trunk/reactos/config	2005-02-28 17:40:15 UTC (rev 13777)
@@ -15,7 +15,7 @@
</small></pre><pre class="diff" id="context"> # be optimze for. 
 #
 
</pre><pre class="diff" id="removed">-OARCH := <span \
id="removedchars">pentium2</span> </pre><pre class="diff" id="added">+OARCH := <span \
id="addedchars">i486</span> </pre><pre class="diff" id="context"> 
 #
 # Whether to compile in the kernel debugger
@@ -30,7 +30,7 @@
</pre><pre class="diff" id="context"> #
 # Whether to compile with optimizations
 #
</pre><pre class="diff" id="removed">-OPTIMIZED := <span id="removedchars">1</span>
</pre><pre class="diff" id="added">+OPTIMIZED := <span id="addedchars">0</span>
</pre><pre class="diff" id="context"> 
 #
 # Whether to compile a multiprocessor or single processor version
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/drivers/storage/floppy/floppy.c</b></big></div> <pre \
class="diff"><small id="info">--- \
                trunk/reactos/drivers/storage/floppy/floppy.c	2005-02-28 16:44:38 UTC \
                (rev 13776)
+++ trunk/reactos/drivers/storage/floppy/floppy.c	2005-02-28 17:40:15 UTC (rev 13777)
@@ -58,7 +58,7 @@
</small></pre><pre class="diff" id="context"> 
 /* Queue thread management */
 static KEVENT QueueThreadTerminate;
</pre><pre class="diff" id="removed">-static PVOID <span \
id="removedchars">Queue</span>ThreadObject; </pre><pre class="diff" \
id="added">+static PVOID ThreadObject; </pre><pre class="diff" id="context"> 
 
 static VOID NTAPI MotorStopDpcFunc(PKDPC UnusedDpc,
@@ -378,8 +378,8 @@
</pre><pre class="diff" id="context"> &nbsp; KdPrint((&quot;floppy: \
unloading\n&quot;));  
 &nbsp; KeSetEvent(&amp;QueueThreadTerminate, 0, FALSE);
</pre><pre class="diff" id="removed">- &nbsp;KeWaitForSingleObject(QueueThreadObject, \
                Executive, KernelMode, FALSE, 0);
- &nbsp;<span id="removedchars">ObDereferenceObject(QueueThreadObject</span>);
</pre><pre class="diff" id="added">+ &nbsp;<span \
id="addedchars">KeWaitForSingleObject(ThreadObject, Executive, KernelMode, FALSE, \
0</span>); + &nbsp;ObDereferenceObject(ThreadObject);
</pre><pre class="diff" id="context"> 
 &nbsp; for(i = 0; i &lt; gNumberOfControllers; i++)
 &nbsp; &nbsp; {
@@ -1152,7 +1152,7 @@
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp; return \
STATUS_INSUFFICIENT_RESOURCES;  &nbsp; &nbsp; }
 
</pre><pre class="diff" id="removed">- \
&nbsp;if(ObReferenceObjectByHandle(ThreadHandle, STANDARD_RIGHTS_ALL, NULL, \
KernelMode, &amp;<span id="removedchars">Queue</span>ThreadObject, NULL) != \
STATUS_SUCCESS) </pre><pre class="diff" id="added">+ \
&nbsp;if(ObReferenceObjectByHandle(ThreadHandle, STANDARD_RIGHTS_ALL, NULL, \
KernelMode, &amp;ThreadObject, NULL) != STATUS_SUCCESS) </pre><pre class="diff" \
id="context"> &nbsp; &nbsp; {  &nbsp; &nbsp; &nbsp; KdPrint((&quot;floppy: Unable to \
reference returned thread handle; failing init\n&quot;));  &nbsp; &nbsp; &nbsp; \
return STATUS_UNSUCCESSFUL; </pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/include/ddk/extypes.h</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/include/ddk/extypes.h	2005-02-28 16:44:38 \
                UTC (rev 13776)
+++ trunk/reactos/include/ddk/extypes.h	2005-02-28 17:40:15 UTC (rev 13777)
@@ -30,23 +30,6 @@
</small></pre><pre class="diff" id="context"> &nbsp; &nbsp; MaximumWorkQueue
 } WORK_QUEUE_TYPE;
 
</pre><pre class="diff" id="removed">-typedef struct _EX_QUEUE_WORKER_INFO {
- &nbsp; &nbsp;UCHAR QueueDisabled:1;
- &nbsp; &nbsp;UCHAR MakeThreadsAsNecessary:1;
- &nbsp; &nbsp;UCHAR WaitMode:1;
- &nbsp; &nbsp;ULONG WorkerCount:29;
-} EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO;
-
-typedef struct _EX_WORK_QUEUE {
- &nbsp; &nbsp;KQUEUE WorkerQueue;
- &nbsp; &nbsp;ULONG DynamicThreadCount;
- &nbsp; &nbsp;ULONG WorkItemsProcessed;
- &nbsp; &nbsp;ULONG WorkItemsProcessedLastPass;
- &nbsp; &nbsp;ULONG QueueDepthLastPass;
- &nbsp; &nbsp;EX_QUEUE_WORKER_INFO Info; &nbsp; &nbsp;
-} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
-
-
</pre><pre class="diff" id="context"> typedef ULONG_PTR ERESOURCE_THREAD, \
*PERESOURCE_THREAD;  
 typedef struct _OWNER_ENTRY
@@ -257,10 +240,6 @@
</pre><pre class="diff" id="context"> 		 &nbsp; &nbsp; &nbsp;PVOID Argument1,
 		 &nbsp; &nbsp; &nbsp;PVOID Argument2);
 
</pre><pre class="diff" id="removed">-extern struct _OBJECT_TYPE EXPORTED \
                *ExMutantObjectType;
-extern struct _OBJECT_TYPE EXPORTED *ExSemaphoreObjectType;
-extern struct _OBJECT_TYPE EXPORTED *ExTimerType;
-
</pre><pre class="diff" id="context"> #endif /* __INCLUDE_DDK_EXTYPES_H */
 
 /* EOF */
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/include/ddk/iotypes.h</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/include/ddk/iotypes.h	2005-02-28 16:44:38 \
                UTC (rev 13776)
+++ trunk/reactos/include/ddk/iotypes.h	2005-02-28 17:40:15 UTC (rev 13777)
@@ -886,8 +886,6 @@
</small></pre><pre class="diff" id="context"> #endif
 
 #define IO_TYPE_DRIVER 4L
</pre><pre class="diff" id="removed">-#define IO_TYPE_FILE 0x0F5L
-
</pre><pre class="diff" id="context"> #define DRVO_UNLOAD_INVOKED 0x1L
 #define DRVO_LEGACY_DRIVER &nbsp;0x2L
 #define DRVO_BUILTIN_DRIVER 0x4L
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/include/ddk/ketypes.h</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/include/ddk/ketypes.h	2005-02-28 16:44:38 \
                UTC (rev 13776)
+++ trunk/reactos/include/ddk/ketypes.h	2005-02-28 17:40:15 UTC (rev 13777)
@@ -36,34 +36,23 @@
</small></pre><pre class="diff" id="context"> 
 struct _DISPATCHER_HEADER;
 
</pre><pre class="diff" id="removed">-typedef enum _KOBJECTS {
- &nbsp; EventNotificationObject = 0,
- &nbsp; EventSynchronizationObject = 1,
- &nbsp; MutantObject = 2,
- &nbsp; ProcessObject = 3,
- &nbsp; QueueObject = 4,
- &nbsp; SemaphoreObject = 5,
- &nbsp; ThreadObject = 6,
- &nbsp; GateObject = 7,
- &nbsp; TimerNotificationObject = 8,
- &nbsp; TimerSynchronizationObject = 9,
- &nbsp; Spare2Object = 10,
- &nbsp; Spare3Object = 11,
- &nbsp; Spare4Object = 12,
- &nbsp; Spare5Object = 13,
- &nbsp; Spare6Object = 14,
- &nbsp; Spare7Object = 15,
- &nbsp; Spare8Object = 16,
- &nbsp; Spare9Object = 17,
- &nbsp; ApcObject = 18,
- &nbsp; DpcObject = 19,
- &nbsp; DeviceQueueObject = 20,
- &nbsp; EventPairObject = 21,
- &nbsp; InterruptObject = 22,
- &nbsp; ProfileObject = 23,
- &nbsp; ThreadedDpcObject = 24,
- &nbsp; MaximumKernelObject = 25
-} KOBJECTS;
</pre><pre class="diff" id="added">+typedef enum _KERNEL_OBJECTS {
+	KNotificationEvent = 0,
+	KSynchronizationEvent = 1,
+	KMutant = 2,
+	KProcess = 3,
+	KQueue = 4,
+	KSemaphore = 5,
+	KThread = 6,
+	KNotificationTimer = 8,
+	KSynchronizationTimer = 9,
+	KApc = 18,
+	KDpc = 19,
+	KDeviceQueue = 20,
+	KEventPair = 21,
+	KInterrupt = 22,
+	KProfile = 23
+} KERNEL_OBJECTS;
</pre><pre class="diff" id="context"> 
 #include &lt;pshpack1.h&gt;
 
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/include/ntos/zwtypes.h</b></big></div> <pre class="diff"><small \
id="info">--- trunk/reactos/include/ntos/zwtypes.h	2005-02-28 16:44:38 UTC (rev \
                13776)
+++ trunk/reactos/include/ntos/zwtypes.h	2005-02-28 17:40:15 UTC (rev 13777)
@@ -1262,9 +1262,9 @@
</small></pre><pre class="diff" id="context"> 
 typedef struct _MUTANT_BASIC_INFORMATION
 {
</pre><pre class="diff" id="removed">- &nbsp;LONG CurrentCount;
- &nbsp;BOOLEAN OwnedByCaller;
- &nbsp;<span id="removedchars">BOOLEAN AbandonedState</span>;
</pre><pre class="diff" id="added">+ &nbsp;<span id="addedchars">LONG Count</span>;
+ &nbsp;BOOLEAN Owned;
+ &nbsp;BOOLEAN Abandoned;
</pre><pre class="diff" id="context"> } MUTANT_BASIC_INFORMATION, \
*PMUTANT_BASIC_INFORMATION;  
 
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/lib/ntdll/def/ntdll.def</b></big></div> <pre class="diff"><small \
id="info">--- trunk/reactos/lib/ntdll/def/ntdll.def	2005-02-28 16:44:38 UTC (rev \
                13776)
+++ trunk/reactos/lib/ntdll/def/ntdll.def	2005-02-28 17:40:15 UTC (rev 13777)
@@ -225,6 +225,7 @@
</small></pre><pre class="diff" id="context"> NtSetEvent@8
 NtSetHighEventPair@4
 NtSetHighWaitLowEventPair@4
</pre><pre class="diff" id="added">+NtSetHighWaitLowThread@0
</pre><pre class="diff" id="context"> NtSetInformationFile@20
 NtSetInformationJobObject@16
 NtSetInformationKey@16
@@ -237,6 +238,7 @@
</pre><pre class="diff" id="context"> NtSetLdtEntries@24
 NtSetLowEventPair@4
 NtSetLowWaitHighEventPair@4
</pre><pre class="diff" id="added">+NtSetLowWaitHighThread@0
</pre><pre class="diff" id="context"> NtSetSecurityObject@12
 NtSetSystemEnvironmentValue@8
 NtSetSystemInformation@12
@@ -847,6 +849,7 @@
</pre><pre class="diff" id="context"> ZwSetEvent@8
 ZwSetHighEventPair@4
 ZwSetHighWaitLowEventPair@4
</pre><pre class="diff" id="added">+ZwSetHighWaitLowThread@0
</pre><pre class="diff" id="context"> ZwSetInformationFile@20
 ZwSetInformationKey@16
 ZwSetInformationObject@16
@@ -858,6 +861,7 @@
</pre><pre class="diff" id="context"> ZwSetLdtEntries@24
 ZwSetLowEventPair@4
 ZwSetLowWaitHighEventPair@4
</pre><pre class="diff" id="added">+ZwSetLowWaitHighThread@0
</pre><pre class="diff" id="context"> ZwSetSecurityObject@12
 ZwSetSystemEnvironmentValue@8
 ZwSetSystemInformation@12
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/ntoskrnl/Makefile</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/ntoskrnl/Makefile	2005-02-28 16:44:38 UTC \
                (rev 13776)
+++ trunk/reactos/ntoskrnl/Makefile	2005-02-28 17:40:15 UTC (rev 13777)
@@ -101,8 +101,10 @@
</small></pre><pre class="diff" id="context"> 	ke/bug.o \
 	ke/catch.o \
 	ke/clock.o \
</pre><pre class="diff" id="added">+	ke/critical.o \
</pre><pre class="diff" id="context"> 	ke/dpc.o \
 	ke/device.o \
</pre><pre class="diff" id="added">+	ke/error.o \
</pre><pre class="diff" id="context"> 	ke/event.o \
 	ke/kqueue.o \
 	ke/kthread.o \
@@ -116,6 +118,7 @@
</pre><pre class="diff" id="context"> 	ke/spinlock.o \
 	ke/timer.o \
 	ke/wait.o \
</pre><pre class="diff" id="added">+	ke/alert.o
</pre><pre class="diff" id="context"> 
 # Memory Manager (Mm)
 OBJECTS_MM = \
@@ -216,8 +219,7 @@
</pre><pre class="diff" id="context"> 	ob/object.o \
 	ob/sdcache.o \
 	ob/security.o \
</pre><pre class="diff" id="removed">-	ob/symlink.o \
-	ob/<span id="removedchars">wait</span>.o
</pre><pre class="diff" id="added">+	ob/<span id="addedchars">symlink</span>.o
</pre><pre class="diff" id="context"> 
 # Process Manager (Ps)
 OBJECTS_PS = \
@@ -240,7 +242,6 @@
</pre><pre class="diff" id="context"> OBJECTS_EX = \
 	ex/btree.o \
 	ex/callback.o \
</pre><pre class="diff" id="removed">-	ex/error.o \
</pre><pre class="diff" id="context"> 	ex/event.o \
 	ex/evtpair.o \
 	ex/fmutex.o \
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/ntoskrnl/cm/registry.c</b></big></div> <pre class="diff"><small \
id="info">--- trunk/reactos/ntoskrnl/cm/registry.c	2005-02-28 16:44:38 UTC (rev \
                13776)
+++ trunk/reactos/ntoskrnl/cm/registry.c	2005-02-28 17:40:15 UTC (rev 13777)
@@ -241,30 +241,7 @@
</small></pre><pre class="diff" id="context"> &nbsp; CmiCheckByName(Verbose, \
L&quot;User&quot;);  }
 
</pre><pre class="diff" id="removed">-VOID
-INIT_FUNCTION
-STDCALL
-CmInitHives(BOOLEAN SetupBoot)
-{
- &nbsp; &nbsp;PCHAR BaseAddress;
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Load Registry Hives */
- &nbsp; &nbsp;BaseAddress = (PCHAR)CachedModules[SystemRegistry]-&gt;ModStart;
- &nbsp; &nbsp;CmImportSystemHive(BaseAddress,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                CachedModules[SystemRegistry]-&gt;ModEnd - (ULONG_PTR)BaseAddress);
- &nbsp; &nbsp;
- &nbsp; &nbsp;BaseAddress = (PCHAR)CachedModules[HardwareRegistry]-&gt;ModStart;
- &nbsp; &nbsp;CmImportHardwareHive(BaseAddress,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                CachedModules[HardwareRegistry]-&gt;ModEnd - (ULONG_PTR)BaseAddress);
- &nbsp; &nbsp;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Create dummy keys if no \
                hardware hive was found */
- &nbsp; &nbsp;CmImportHardwareHive (NULL, 0);
-
- &nbsp; &nbsp;/* Initialize volatile registry settings */
- &nbsp; &nbsp;if (SetupBoot == FALSE) CmInit2((PCHAR)KeLoaderBlock.CommandLine);
-} &nbsp; 
-
</pre><pre class="diff" id="context"> VOID INIT_FUNCTION
 CmInitializeRegistry(VOID)
 {
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Deleted: \
trunk/reactos/ntoskrnl/ex/error.c</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/ntoskrnl/ex/error.c	2005-02-28 16:44:38 \
                UTC (rev 13776)
+++ trunk/reactos/ntoskrnl/ex/error.c	2005-02-28 17:40:15 UTC (rev 13777)
@@ -1,163 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * COPYRIGHT: &nbsp; &nbsp; &nbsp; See COPYING in the top level directory
- * PROJECT: &nbsp; &nbsp; &nbsp; &nbsp; ReactOS kernel
- * FILE: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ntoskrnl/ex/error.c
- * PURPOSE: &nbsp; &nbsp; &nbsp; &nbsp; Error Functions and Status/Exception \
                Dispatching/Raising
- *
- * PROGRAMMERS: &nbsp; &nbsp; Alex Ionescu (alex@relsoft.net) - Created File
- */
-
-/* INCLUDES *****************************************************************/
-
-#include &lt;ntoskrnl.h&gt;
-#define NDEBUG
-#include &lt;internal/debug.h&gt;
-
-/* GLOBALS ****************************************************************/
-
-BOOLEAN ExReadyForErrors = FALSE;
-PEPORT ExpDefaultErrorPort = NULL;
-PEPROCESS ExpDefaultErrorPortProcess = NULL;
-
-/* FUNCTIONS ****************************************************************/
-
-/*
- * @implemented
- */
-VOID 
-STDCALL
-ExRaiseAccessViolation(VOID)
-{
- &nbsp; &nbsp;/* Raise the Right Status */
- &nbsp; &nbsp;ExRaiseStatus (STATUS_ACCESS_VIOLATION);
-}
-
-/*
- * @implemented
- */
-VOID
-STDCALL
-ExRaiseDatatypeMisalignment (VOID)
-{
- &nbsp; &nbsp;/* Raise the Right Status */
- &nbsp; &nbsp;ExRaiseStatus (STATUS_DATATYPE_MISALIGNMENT);
-}
-
-/*
- * @implemented
- */
-VOID 
-STDCALL
-ExRaiseStatus(IN NTSTATUS Status)
-{
- &nbsp; &nbsp;EXCEPTION_RECORD ExceptionRecord;
-
- &nbsp; &nbsp;DPRINT(&quot;ExRaiseStatus(%x)\n&quot;, Status);
-
- &nbsp; &nbsp;/* Set up an Exception Record */
- &nbsp; &nbsp;ExceptionRecord.ExceptionRecord = NULL;
- &nbsp; &nbsp;ExceptionRecord.NumberParameters = 0;
- &nbsp; &nbsp;ExceptionRecord.ExceptionCode = Status;
- &nbsp; &nbsp;ExceptionRecord.ExceptionFlags = 0;
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Call the Rtl Function */
- &nbsp; &nbsp;RtlRaiseException(&amp;ExceptionRecord);
-}
-
-/*
- * @implemented
- */
-VOID
-STDCALL
-ExRaiseException (PEXCEPTION_RECORD ExceptionRecord)
-{
- &nbsp; &nbsp;/* Call the Rtl function */
- &nbsp; &nbsp;RtlRaiseException(ExceptionRecord);
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-STDCALL
-ExSystemExceptionFilter(VOID)
-{
- &nbsp; &nbsp;return KeGetPreviousMode() != KernelMode ? EXCEPTION_EXECUTE_HANDLER : \
                EXCEPTION_CONTINUE_SEARCH;
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-ExRaiseHardError(IN NTSTATUS ErrorStatus,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN ULONG \
                NumberOfParameters, 
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN PUNICODE_STRING \
                UnicodeStringParameterMask OPTIONAL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN PVOID *Parameters, 
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN \
                HARDERROR_RESPONSE_OPTION ResponseOption, 
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OUT PHARDERROR_RESPONSE \
                Response)
-{
- &nbsp; &nbsp;UNIMPLEMENTED;
-}
-
-NTSTATUS 
-STDCALL 
-NtRaiseHardError(IN NTSTATUS ErrorStatus,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN ULONG \
                NumberOfParameters,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN PUNICODE_STRING \
                UnicodeStringParameterMask &nbsp;OPTIONAL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN PVOID *Parameters,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN \
                HARDERROR_RESPONSE_OPTION ResponseOption,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OUT PHARDERROR_RESPONSE \
                Response)
-{
- &nbsp; &nbsp;DPRINT1(&quot;Hard error %x\n&quot;, ErrorStatus);
- &nbsp;
- &nbsp; &nbsp;/* Call the Executive Function (WE SHOULD PUT SEH HERE/CAPTURE!) */
- &nbsp; &nbsp;ExRaiseHardError(ErrorStatus,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                NumberOfParameters,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                UnicodeStringParameterMask,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Parameters,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                ResponseOption,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Response);
- &nbsp;
- &nbsp; &nbsp;/* Return Success */
- &nbsp; &nbsp;return STATUS_SUCCESS;
-}
-
-NTSTATUS 
-STDCALL 
-NtSetDefaultHardErrorPort(IN HANDLE PortHandle)
-{
- &nbsp; &nbsp;
- &nbsp; &nbsp;KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
- &nbsp; &nbsp;NTSTATUS Status = STATUS_UNSUCCESSFUL;
- &nbsp;
- &nbsp; &nbsp;/* Check if we have the Privilege */
- &nbsp; &nbsp;if(!SeSinglePrivilegeCheck(SeTcbPrivilege, PreviousMode)) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;DPRINT1(&quot;NtSetDefaultHardErrorPort: Caller requires \
                the SeTcbPrivilege privilege!\n&quot;);
- &nbsp; &nbsp; &nbsp; &nbsp;return STATUS_PRIVILEGE_NOT_HELD;
- &nbsp; &nbsp;}
- &nbsp;
- &nbsp; &nbsp;/* Only called once during bootup, make sure we weren't called yet */
- &nbsp; &nbsp;if(!ExReadyForErrors) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;Status = ObReferenceObjectByHandle(PortHandle,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                LpcPortObjectType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                PreviousMode,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                (PVOID*)&amp;ExpDefaultErrorPort,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL);
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;/* Check for Success */
- &nbsp; &nbsp; &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* Save the data */
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExpDefaultErrorPortProcess = \
                PsGetCurrentProcess();
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExReadyForErrors = TRUE;
- &nbsp; &nbsp; &nbsp; &nbsp;}
- &nbsp; &nbsp;}
- &nbsp;
- &nbsp; &nbsp;return Status;
-}
-
-/* EOF */
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: \
trunk/reactos/ntoskrnl/ex/event.c</b></big></div> <pre class="diff"><small \
                id="info">--- trunk/reactos/ntoskrnl/ex/event.c	2005-02-28 16:44:38 \
                UTC (rev 13776)
+++ trunk/reactos/ntoskrnl/ex/event.c	2005-02-28 17:40:15 UTC (rev 13777)
@@ -19,286 +19,300 @@
</small></pre><pre class="diff" id="context"> POBJECT_TYPE EXPORTED ExEventObjectType \
= NULL;  
 static GENERIC_MAPPING ExpEventMapping = {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;STANDARD_RIGHTS_READ | \
                SYNCHRONIZE | EVENT_QUERY_STATE,
- &nbsp; &nbsp;STANDARD_RIGHTS_WRITE | SYNCHRONIZE | EVENT_MODIFY_STATE,
- &nbsp; &nbsp;STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | EVENT_QUERY_STATE,
- &nbsp; &nbsp;EVENT_ALL_ACCESS};
</pre><pre class="diff" id="added">+	STANDARD_RIGHTS_READ | SYNCHRONIZE | \
EVENT_QUERY_STATE, +	STANDARD_RIGHTS_WRITE | SYNCHRONIZE | EVENT_MODIFY_STATE,
+	STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | EVENT_QUERY_STATE,
+	EVENT_ALL_ACCESS};
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-static const INFORMATION_CLASS_INFO \
                ExEventInfoClass[] = {
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* EventBasicInformation */
- &nbsp; &nbsp;ICI_SQ_SAME( sizeof(EVENT_BASIC_INFORMATION), sizeof(ULONG), \
ICIF_QUERY), </pre><pre class="diff" id="added">+static const INFORMATION_CLASS_INFO \
ExEventInfoClass[] = +{
+ &nbsp;ICI_SQ_SAME( sizeof(EVENT_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ), /* \
EventBasicInformation */ </pre><pre class="diff" id="context"> };
 
 /* FUNCTIONS *****************************************************************/
 
</pre><pre class="diff" id="removed">-VOID 
-INIT_FUNCTION
</pre><pre class="diff" id="added">+NTSTATUS STDCALL
+NtpCreateEvent(PVOID ObjectBody,
+	 &nbsp; &nbsp; &nbsp; PVOID Parent,
+	 &nbsp; &nbsp; &nbsp; PWSTR RemainingPath,
+	 &nbsp; &nbsp; &nbsp; POBJECT_ATTRIBUTES ObjectAttributes)
+{
+ &nbsp;DPRINT(&quot;NtpCreateEvent(ObjectBody %x, Parent %x, RemainingPath \
%S)\n&quot;, +	 ObjectBody, Parent, RemainingPath);
+
+ &nbsp;if (RemainingPath != NULL &amp;&amp; wcschr(RemainingPath+1, '\\') != NULL)
+ &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp;return(STATUS_UNSUCCESSFUL);
+ &nbsp; &nbsp;}
+
+ &nbsp;return(STATUS_SUCCESS);
+}
+
+
+VOID INIT_FUNCTION
</pre><pre class="diff" id="context"> ExpInitializeEventImplementation(VOID)
 {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Create the Event Object Type \
                */
- &nbsp; &nbsp;ExEventObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
- &nbsp; &nbsp;RtlpCreateUnicodeString(&amp;ExEventObjectType-&gt;TypeName, \
                L&quot;Event&quot;, NonPagedPool);
- &nbsp; &nbsp;ExEventObjectType-&gt;Tag = TAG('E', 'V', 'T', 'T');
- &nbsp; &nbsp;ExEventObjectType-&gt;PeakObjects = 0;
- &nbsp; &nbsp;ExEventObjectType-&gt;PeakHandles = 0;
- &nbsp; &nbsp;ExEventObjectType-&gt;TotalObjects = 0;
- &nbsp; &nbsp;ExEventObjectType-&gt;TotalHandles = 0;
- &nbsp; &nbsp;ExEventObjectType-&gt;PagedPoolCharge = 0;
- &nbsp; &nbsp;ExEventObjectType-&gt;NonpagedPoolCharge = sizeof(KEVENT);
- &nbsp; &nbsp;ExEventObjectType-&gt;Mapping = &amp;ExpEventMapping;
- &nbsp; &nbsp;ExEventObjectType-&gt;Dump = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Open = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Close = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Delete = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Parse = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Security = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;QueryName = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;OkayToClose = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;Create = NULL;
- &nbsp; &nbsp;ExEventObjectType-&gt;DuplicationNotify = NULL;
- &nbsp; <span id="removedchars"> ObpCreateTypeObject(ExEventObjectType</span>);
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">ExEventObjectType = \
ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE)</span>); + &nbsp; 
+ &nbsp; RtlpCreateUnicodeString(&amp;ExEventObjectType-&gt;TypeName, \
L&quot;Event&quot;, NonPagedPool); + &nbsp; 
+ &nbsp; ExEventObjectType-&gt;Tag = TAG('E', 'V', 'T', 'T');
+ &nbsp; ExEventObjectType-&gt;PeakObjects = 0;
+ &nbsp; ExEventObjectType-&gt;PeakHandles = 0;
+ &nbsp; ExEventObjectType-&gt;TotalObjects = 0;
+ &nbsp; ExEventObjectType-&gt;TotalHandles = 0;
+ &nbsp; ExEventObjectType-&gt;PagedPoolCharge = 0;
+ &nbsp; ExEventObjectType-&gt;NonpagedPoolCharge = sizeof(KEVENT);
+ &nbsp; ExEventObjectType-&gt;Mapping = &amp;ExpEventMapping;
+ &nbsp; ExEventObjectType-&gt;Dump = NULL;
+ &nbsp; ExEventObjectType-&gt;Open = NULL;
+ &nbsp; ExEventObjectType-&gt;Close = NULL;
+ &nbsp; ExEventObjectType-&gt;Delete = NULL;
+ &nbsp; ExEventObjectType-&gt;Parse = NULL;
+ &nbsp; ExEventObjectType-&gt;Security = NULL;
+ &nbsp; ExEventObjectType-&gt;QueryName = NULL;
+ &nbsp; ExEventObjectType-&gt;OkayToClose = NULL;
+ &nbsp; ExEventObjectType-&gt;Create = NtpCreateEvent;
+ &nbsp; ExEventObjectType-&gt;DuplicationNotify = NULL;
+
+ &nbsp; ObpCreateTypeObject(ExEventObjectType);
</pre><pre class="diff" id="context"> }
 
</pre><pre class="diff" id="added">+
</pre><pre class="diff" id="context"> /*
 &nbsp;* @implemented
 &nbsp;*/
</pre><pre class="diff" id="removed">-NTSTATUS 
-<span id="removedchars">S</span>TDCALL
</pre><pre class="diff" id="added">+<span id="addedchars">NTSTATUS S</span>TDCALL
</pre><pre class="diff" id="context"> NtClearEvent(IN HANDLE EventHandle)
 {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;PKEVENT Event;
- &nbsp; &nbsp;NTSTATUS Status;
- &nbsp; &nbsp;
- &nbsp; <span id="removedchars"> PAGED_CODE()</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">PKEVENT \
Event</span>; + &nbsp; NTSTATUS Status;
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; <span id="removedchars"> /* Reference \
the Object */</span> </pre><pre class="diff" id="added">+ &nbsp; <span \
id="addedchars">PAGED_CODE();</span> + &nbsp; 
</pre><pre class="diff" id="context"> &nbsp; &nbsp;Status = \
ObReferenceObjectByHandle(EventHandle, </pre><pre class="diff" id="removed">- &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EVENT_MODIFY_STATE,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExEventObjectType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExGetPreviousMode(),
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(PVOID*)&amp;Event,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL); </pre><pre class="diff" \
id="added">+				 &nbsp; &nbsp; &nbsp;EVENT_MODIFY_STATE, +				 &nbsp; &nbsp; \
&nbsp;ExEventObjectType, +				 &nbsp; &nbsp; &nbsp;ExGetPreviousMode(),
+				 &nbsp; &nbsp; &nbsp;(PVOID*)&amp;Event,
+				 &nbsp; &nbsp; &nbsp;NULL);
+ &nbsp; if(NT_SUCCESS(Status))
+ &nbsp; {
+ &nbsp; &nbsp; KeClearEvent(Event);
+ &nbsp; &nbsp; ObDereferenceObject(Event);
+ &nbsp; }
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; /* Check for Success */
- &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;/* Clear the Event and Dereference */
- &nbsp; &nbsp; &nbsp; &nbsp;KeClearEvent(Event);
- &nbsp; &nbsp; &nbsp; &nbsp;ObDereferenceObject(Event);
- &nbsp; &nbsp;}
- &nbsp; 
- &nbsp; &nbsp;/* Return Status */
- &nbsp; <span id="removedchars"> </span>return Status;
</pre><pre class="diff" id="added">+ &nbsp; return Status;
</pre><pre class="diff" id="context"> }
 
 
 /*
 &nbsp;* @implemented
 &nbsp;*/
</pre><pre class="diff" id="removed">-NTSTATUS 
-<span id="removedchars">S</span>TDCALL
</pre><pre class="diff" id="added">+<span id="addedchars">NTSTATUS S</span>TDCALL
</pre><pre class="diff" id="context"> NtCreateEvent(OUT PHANDLE EventHandle,
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;IN ACCESS_MASK DesiredAccess,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IN POBJECT_ATTRIBUTES \
                ObjectAttributes &nbsp;OPTIONAL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IN EVENT_TYPE EventType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IN BOOLEAN InitialState)
</pre><pre class="diff" id="added">+	 &nbsp; &nbsp; &nbsp;IN ACCESS_MASK \
DesiredAccess, +	 &nbsp; &nbsp; &nbsp;IN POBJECT_ATTRIBUTES ObjectAttributes \
&nbsp;OPTIONAL, +	 &nbsp; &nbsp; &nbsp;IN EVENT_TYPE EventType,
+	 &nbsp; &nbsp; &nbsp;IN BOOLEAN InitialState)
</pre><pre class="diff" id="context"> {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;KPROCESSOR_MODE PreviousMode = \
                ExGetPreviousMode();
- &nbsp; &nbsp;PKEVENT Event;
- &nbsp; &nbsp;HANDLE hEvent;
- &nbsp; <span id="removedchars"> NTSTATUS Status = STATUS_SUCCESS</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">KPROCESSOR_MODE \
PreviousMode</span>; + &nbsp; PKEVENT Event;
+ &nbsp; HANDLE hEvent;
+ &nbsp; NTSTATUS Status = STATUS_SUCCESS;
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; <span id="removedchars"> \
</span>PAGED_CODE(); </pre><pre class="diff" id="added">+ &nbsp; PAGED_CODE();
</pre><pre class="diff" id="context"> &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Check Output Safety */
- &nbsp; &nbsp;if(PreviousMode == UserMode) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProbeForWrite(EventHandle,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(HANDLE),
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(ULONG));
- &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; <span id="removedchars"> &nbsp; &nbsp; } _SEH_END</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">PreviousMode = \
ExGetPreviousMode()</span>; + 
+ &nbsp; if(PreviousMode == UserMode)
+ &nbsp; {
+ &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; ProbeForWrite(EventHandle,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
sizeof(HANDLE), + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; sizeof(ULONG)); + &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_END;
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; \
                &nbsp;if(!NT_SUCCESS(Status)) return Status;
- &nbsp; &nbsp;}
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Create the Object */
- &nbsp; &nbsp;Status = ObCreateObject(PreviousMode,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;ExEventObjectType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;ObjectAttributes,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;PreviousMode,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;NULL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;sizeof(KEVENT),
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;0,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;0,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp;(PVOID*)&amp;Event);
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Check for Success */
- &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;/* Initalize the Event */
- &nbsp; &nbsp; &nbsp; &nbsp;KeInitializeEvent(Event,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;EventType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;InitialState);
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;/* Insert it */
- &nbsp; &nbsp; &nbsp; &nbsp;Status = ObInsertObject((PVOID)Event,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; NULL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; DesiredAccess,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; 0,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; NULL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &amp;hEvent);
- &nbsp; &nbsp; <span id="removedchars"> &nbsp; ObDereferenceObject(Event);</span>
</pre><pre class="diff" id="added">+ &nbsp; &nbsp; <span \
id="addedchars">if(!NT_SUCCESS(Status))</span> + &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; return Status;
+ &nbsp; &nbsp; }
+ &nbsp; }
</pre><pre class="diff" id="context"> &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp;/* Check for \
                success and return handle */
- &nbsp; &nbsp; &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*EventHandle = hEvent;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = \
                _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_END;
- &nbsp; &nbsp; &nbsp; &nbsp;}
- &nbsp; &nbsp;}
-
- &nbsp; &nbsp;/* Return Status */
- &nbsp; <span id="removedchars"> return Status;</span>
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">Status = \
ObCreateObject(PreviousMode,</span> + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExEventObjectType, + &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
ObjectAttributes, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; PreviousMode, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL, + &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sizeof(KEVENT), + \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; 0, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; 0, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (PVOID*)&amp;Event); + &nbsp; \
if(NT_SUCCESS(Status)) + &nbsp; {
+ &nbsp; &nbsp; KeInitializeEvent(Event,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
EventType, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; InitialState); + 
+ 
+ &nbsp; &nbsp; Status = ObInsertObject((PVOID)Event,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; NULL, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DesiredAccess, + &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, + &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; NULL, + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &amp;hEvent); + &nbsp; &nbsp; ObDereferenceObject(Event);
+ 
+ &nbsp; &nbsp; if(NT_SUCCESS(Status))
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; &nbsp; *EventHandle = hEvent;
+ &nbsp; &nbsp; &nbsp; }
+ &nbsp; &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; &nbsp; }
+ &nbsp; &nbsp; &nbsp; _SEH_END;
+ &nbsp; &nbsp; }
+ &nbsp; }
+ 
+ &nbsp; return Status;
</pre><pre class="diff" id="context"> }
 
</pre><pre class="diff" id="added">+
</pre><pre class="diff" id="context"> /*
 &nbsp;* @implemented
 &nbsp;*/
</pre><pre class="diff" id="removed">-NTSTATUS 
-<span id="removedchars">S</span>TDCALL
</pre><pre class="diff" id="added">+<span id="addedchars">NTSTATUS S</span>TDCALL
</pre><pre class="diff" id="context"> NtOpenEvent(OUT PHANDLE EventHandle,
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IN \
                ACCESS_MASK DesiredAccess,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IN POBJECT_ATTRIBUTES ObjectAttributes)
</pre><pre class="diff" id="added">+	 &nbsp; &nbsp;IN ACCESS_MASK DesiredAccess,
+	 &nbsp; &nbsp;IN POBJECT_ATTRIBUTES ObjectAttributes)
</pre><pre class="diff" id="context"> {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;HANDLE hEvent;
- &nbsp; &nbsp;KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
- &nbsp; <span id="removedchars"> NTSTATUS Status = STATUS_SUCCESS</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">HANDLE \
hEvent</span>; + &nbsp; KPROCESSOR_MODE PreviousMode;
+ &nbsp; NTSTATUS Status = STATUS_SUCCESS;
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;PAGED_CODE();
- &nbsp; <span id="removedchars"> DPRINT(&quot;NtOpenEvent(0x%x, 0x%x, 0x%x)\n&quot;, \
EventHandle, DesiredAccess, ObjectAttributes</span>); </pre><pre class="diff" \
id="added">+ &nbsp; <span id="addedchars">PAGED_CODE(</span>); + &nbsp; 
+ &nbsp; DPRINT(&quot;NtOpenEvent(0x%x, 0x%x, 0x%x)\n&quot;, EventHandle, \
DesiredAccess, ObjectAttributes); </pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Check Output Safety */
- &nbsp; &nbsp;if(PreviousMode == UserMode) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProbeForWrite(EventHandle,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(HANDLE),
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(ULONG));
- &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; <span id="removedchars"> &nbsp; &nbsp; } _SEH_END</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">PreviousMode = \
ExGetPreviousMode()</span>; + &nbsp; 
+ &nbsp; if(PreviousMode == UserMode)
+ &nbsp; {
+ &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; ProbeForWrite(EventHandle,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
sizeof(HANDLE), + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; sizeof(ULONG)); + &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_END;
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; \
                &nbsp;if(!NT_SUCCESS(Status)) return Status;
- &nbsp; &nbsp;}
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Open the Object */
- &nbsp; &nbsp;Status = ObOpenObjectByName(ObjectAttributes,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp;ExEventObjectType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp;NULL,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp;PreviousMode,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp;DesiredAccess,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp;NULL,
- &nbsp; &nbsp; <span id="removedchars"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;hEvent);</span> </pre><pre \
class="diff" id="added">+ &nbsp; &nbsp; <span \
id="addedchars">if(!NT_SUCCESS(Status))</span> + &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; return Status;
+ &nbsp; &nbsp; }
+ &nbsp; }
+
+ &nbsp; Status = ObOpenObjectByName(ObjectAttributes,
+			 &nbsp; &nbsp; &nbsp; ExEventObjectType,
+			 &nbsp; &nbsp; &nbsp; NULL,
+			 &nbsp; &nbsp; &nbsp; PreviousMode,
+			 &nbsp; &nbsp; &nbsp; DesiredAccess,
+			 &nbsp; &nbsp; &nbsp; NULL,
+			 &nbsp; &nbsp; &nbsp; &amp;hEvent);
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; </pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Check for success and \
                return handle */
- &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*EventHandle = hEvent;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_END;
- &nbsp; <span id="removedchars"> }</span>
</pre><pre class="diff" id="added">+ &nbsp; <span \
id="addedchars">if(NT_SUCCESS(Status))</span> + &nbsp; {
+ &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; *EventHandle = hEvent;
+ &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_END;
+ &nbsp; }
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Return status */
- &nbsp; <span id="removedchars"> </span>return Status;
</pre><pre class="diff" id="added">+ &nbsp; return Status;
</pre><pre class="diff" id="context"> }
 
</pre><pre class="diff" id="added">+
</pre><pre class="diff" id="context"> /*
 &nbsp;* @implemented
 &nbsp;*/
</pre><pre class="diff" id="removed">-NTSTATUS 
-<span id="removedchars">S</span>TDCALL
</pre><pre class="diff" id="added">+<span id="addedchars">NTSTATUS S</span>TDCALL
</pre><pre class="diff" id="context"> NtPulseEvent(IN HANDLE EventHandle,
</pre><pre class="diff" id="removed">-<span id="removedchars"> &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; OUT PLONG PreviousState</span> OPTIONAL) </pre><pre class="diff" \
id="added">+<span id="addedchars">	 &nbsp; &nbsp; OUT PLONG PreviousState </span> \
OPTIONAL) </pre><pre class="diff" id="context"> {
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;PKEVENT Event;
- &nbsp; &nbsp;KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
- &nbsp; <span id="removedchars"> NTSTATUS Status = STATUS_SUCCESS</span>;
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">PKEVENT \
Event</span>; + &nbsp; KPROCESSOR_MODE PreviousMode;
+ &nbsp; NTSTATUS Status = STATUS_SUCCESS;
</pre><pre class="diff" id="context"> &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;PAGED_CODE();
- &nbsp; &nbsp;DPRINT(&quot;NtPulseEvent(EventHandle 0%x PreviousState 0%x)\n&quot;,
- &nbsp; <span id="removedchars"> &nbsp; &nbsp; &nbsp; &nbsp; EventHandle, \
PreviousState</span>); </pre><pre class="diff" id="added">+ &nbsp; <span \
id="addedchars">PAGED_CODE(</span>); </pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; &nbsp;/* Check buffer validity */
- &nbsp; &nbsp;if(PreviousState &amp;&amp; PreviousMode == UserMode) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProbeForWrite(PreviousState,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(LONG),
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp;sizeof(ULONG));
- &nbsp; &nbsp; &nbsp; &nbsp; } _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; <span id="removedchars"> &nbsp; &nbsp; } _SEH_END;</span>
</pre><pre class="diff" id="added">+ &nbsp; <span \
id="addedchars">DPRINT(&quot;NtPulseEvent(EventHandle 0%x PreviousState \
0%x)\n&quot;,</span> +	 &nbsp;EventHandle, PreviousState);
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; \
                &nbsp;if(!NT_SUCCESS(Status)) return Status;
- &nbsp; &nbsp;}
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Open the Object */
- &nbsp; &nbsp;Status = ObReferenceObjectByHandle(EventHandle,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EVENT_MODIFY_STATE,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExEventObjectType,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PreviousMode,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (PVOID*)&amp;Event,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
                &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL);
- &nbsp; &nbsp;
- &nbsp; &nbsp;/* Check for success */
- &nbsp; &nbsp;if(NT_SUCCESS(Status)) {
- &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;/* Pulse the Event */
- &nbsp; &nbsp; &nbsp; &nbsp;LONG Prev = KePulseEvent(Event, EVENT_INCREMENT, FALSE);
- &nbsp; <span id="removedchars"> &nbsp; &nbsp; ObDereferenceObject(Event</span>);
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">PreviousMode = \
ExGetPreviousMode(</span>); + &nbsp; 
+ &nbsp; if(PreviousState != NULL &amp;&amp; PreviousMode == UserMode)
+ &nbsp; {
+ &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; ProbeForWrite(PreviousState,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sizeof(LONG),
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
sizeof(ULONG)); + &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; }
+ &nbsp; &nbsp; _SEH_END;
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp;/* Return it */ \
                &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp;if(PreviousState) {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_SEH_TRY {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*PreviousState = Prev;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_HANDLE {
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Status = \
                _SEH_GetExceptionCode();
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} _SEH_END;
- &nbsp; &nbsp; <span id="removedchars"> &nbsp; }</span>
</pre><pre class="diff" id="added">+ &nbsp; &nbsp; <span \
id="addedchars">if(!NT_SUCCESS(Status))</span> + &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; return Status;
+ &nbsp; &nbsp; }
</pre><pre class="diff" id="context"> &nbsp; &nbsp;}
 
</pre><pre class="diff" id="removed">- &nbsp; <span id="removedchars">/* Return \
Status */</span> </pre><pre class="diff" id="added">+ &nbsp; <span \
id="addedchars">Status = ObReferenceObjectByHandle(EventHandle,</span> +				 &nbsp; \
&nbsp; &nbsp;EVENT_MODIFY_STATE, +				 &nbsp; &nbsp; &nbsp;ExEventObjectType,
+				 &nbsp; &nbsp; &nbsp;PreviousMode,
+				 &nbsp; &nbsp; &nbsp;(PVOID*)&amp;Event,
+				 &nbsp; &nbsp; &nbsp;NULL);
+ &nbsp; if(NT_SUCCESS(Status))
+ &nbsp; {
+ &nbsp; &nbsp; LONG Prev = KePulseEvent(Event, EVENT_INCREMENT, FALSE);
+ &nbsp; &nbsp; ObDereferenceObject(Event);
+ &nbsp; &nbsp; 
+ &nbsp; &nbsp; if(PreviousState != NULL)
+ &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; _SEH_TRY
+ &nbsp; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; &nbsp; *PreviousState = Prev;
+ &nbsp; &nbsp; &nbsp; }
+ &nbsp; &nbsp; &nbsp; _SEH_HANDLE
+ &nbsp; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp; &nbsp; Status = _SEH_GetExceptionCode();
+ &nbsp; &nbsp; &nbsp; }
+ &nbsp; &nbsp; &nbsp; _SEH_END;
+ &nbsp; &nbsp; }
+ &nbsp; }
+
</pre><pre class="diff" id="context"> &nbsp; &nbsp;return Status;
 }
 
@@ -306,202 +320,230 @@
</pre><pre class="diff" id="context"> /*
 &nbsp;* @implemented
 &nbsp;*/
</pre><pre class="diff" id="removed">-NTSTATUS 
-<span id="removedchars">S</span>TDCALL
</pre><pre class="diff" id="added">+<span id="addedchars">NTSTATUS S</span>TDCALL
</pre><pre class="diff" id="context"> NtQueryEvent(IN HANDLE EventHandle,
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IN \
EVENT_INFORMATION_CLASS EventInformationClass, </pre>
<strong class="error">[truncated at 1000 lines; 13561 more skipped]</strong>
</div>

</body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic