Update Eng Events and fix InputIdleEvent.

svn path=/trunk/; revision=34423
This commit is contained in:
James Tabor
2008-07-11 10:57:49 +00:00
parent dee49b95a1
commit a704e14031
3 changed files with 18 additions and 5 deletions
+16 -4
View File
@@ -17,7 +17,7 @@ BOOL
STDCALL
EngCreateEvent ( OUT PEVENT *Event )
{
(*Event) = ExAllocatePool(NonPagedPool, sizeof(KEVENT));
(*Event) = ExAllocatePoolWithTag(NonPagedPool, sizeof(KEVENT), TAG_DFSM);
if ((*Event) == NULL)
{
return FALSE;
@@ -45,6 +45,9 @@ EngMapEvent(IN HDEV Dev,
NTSTATUS Status;
PKEVENT Event;
Event = ExAllocatePoolWithTag(NonPagedPool, sizeof(KEVENT), TAG_DFSM);
if (!Event) return NULL;
Status = ObReferenceObjectByHandle(UserObject,
EVENT_MODIFY_STATE,
ExEventObjectType,
@@ -52,9 +55,15 @@ EngMapEvent(IN HDEV Dev,
(PVOID*)&Event,
NULL);
if (!NT_SUCCESS(Status))
{
return NULL;
}
{
ExFreePool(Event);
return NULL;
}
else
KePulseEvent(Event, EVENT_INCREMENT, FALSE);
if (Reserved1) Reserved1 = Event;
return (PEVENT)Event;
}
@@ -70,6 +79,7 @@ STDCALL
EngUnmapEvent ( IN PEVENT Event )
{
ObDereferenceObject((PVOID)Event);
ExFreePool(Event);
return TRUE;
}
@@ -80,6 +90,8 @@ EngWaitForSingleObject (IN PEVENT Event,
{
NTSTATUS Status;
if (!Event) return FALSE;
Status = KeWaitForSingleObject(Event,
Executive,
KernelMode,
@@ -75,6 +75,7 @@
/* Eng objects */
#define TAG_CLIPOBJ TAG('C', 'L', 'P', 'O') /* clip object */
#define TAG_DRIVEROBJ TAG('D', 'R', 'V', 'O') /* driver object */
#define TAG_DFSM TAG('D', 'f', 's', 'm') /* Eng event allocation */
#define TAG_FONT TAG('F', 'N', 'T', 'E') /* font entry */
#define TAG_FONTOBJ TAG('G', 'f', 'n', 't') /* font object */
#define TAG_WNDOBJ TAG('W', 'N', 'D', 'O') /* window object */
@@ -43,7 +43,7 @@ typedef struct _W32PROCESS
ULONG Flags;
LONG GDIObjects;
LONG UserObjects;
KEVENT InputIdleEvent;
PKEVENT InputIdleEvent;
W32HEAP_USER_MAPPING HeapMappings;
PW32PROCESSINFO ProcessInfo;