[NTOSKRNL][INCLUDE]

Add keyed event access mask values and use them in the keyed event object implementation.
This fixes another kmtest:ObTypes bug.

svn path=/trunk/; revision=66139
This commit is contained in:
Eric Kohl
2015-02-01 13:59:09 +00:00
parent b799bbb859
commit df5dff26f4
2 changed files with 19 additions and 10 deletions
+9
View File
@@ -130,6 +130,15 @@ extern ULONG NTSYSAPI NtBuildNumber;
#define PROFILE_CONTROL 0x0001
#define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
//
// Keyed Event Object Access Masks
//
#define KEYEDEVENT_WAIT 0x0001
#define KEYEDEVENT_WAKE 0x0002
#define KEYEDEVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
KEYEDEVENT_WAIT | \
KEYEDEVENT_WAKE)
//
// NtRaiseHardError-related parameters
//
+10 -10
View File
@@ -43,10 +43,10 @@ POBJECT_TYPE ExKeyedEventObjectType;
static
GENERIC_MAPPING ExpKeyedEventMapping =
{
STANDARD_RIGHTS_READ | EVENT_QUERY_STATE,
STANDARD_RIGHTS_WRITE | EVENT_MODIFY_STATE,
STANDARD_RIGHTS_READ | KEYEDEVENT_WAIT,
STANDARD_RIGHTS_WRITE | KEYEDEVENT_WAKE,
STANDARD_RIGHTS_EXECUTE,
EVENT_ALL_ACCESS
KEYEDEVENT_ALL_ACCESS
};
/* FUNCTIONS *****************************************************************/
@@ -68,7 +68,7 @@ ExpInitializeKeyedEventImplementation(VOID)
ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
ObjectTypeInitializer.GenericMapping = ExpKeyedEventMapping;
ObjectTypeInitializer.PoolType = PagedPool;
ObjectTypeInitializer.ValidAccessMask = EVENT_ALL_ACCESS;
ObjectTypeInitializer.ValidAccessMask = KEYEDEVENT_ALL_ACCESS;
ObjectTypeInitializer.UseDefaultObject = TRUE;
/* Create the keyed event object type */
@@ -81,14 +81,14 @@ ExpInitializeKeyedEventImplementation(VOID)
/* Create the out of memory event for critical sections */
InitializeObjectAttributes(&ObjectAttributes, &Name, OBJ_PERMANENT, NULL, NULL);
Status = ZwCreateKeyedEvent(&EventHandle,
EVENT_ALL_ACCESS,
KEYEDEVENT_ALL_ACCESS,
&ObjectAttributes,
0);
if (NT_SUCCESS(Status))
{
/* Take a reference so we can get rid of the handle */
Status = ObReferenceObjectByHandle(EventHandle,
EVENT_ALL_ACCESS,
KEYEDEVENT_ALL_ACCESS,
ExKeyedEventObjectType,
KernelMode,
(PVOID*)&ExpCritSecOutOfMemoryEvent,
@@ -258,8 +258,8 @@ NTAPI
ExpReleaseKeyedEvent(
_Inout_ PEX_KEYED_EVENT KeyedEvent,
_In_ PVOID KeyedWaitValue,
_In_ BOOLEAN Alertable,
_In_ PLARGE_INTEGER Timeout)
_In_ BOOLEAN Alertable,
_In_ PLARGE_INTEGER Timeout)
{
/* Call the generic internal function */
return ExpReleaseOrWaitForKeyedEvent(KeyedEvent,
@@ -433,7 +433,7 @@ NtWaitForKeyedEvent(
{
/* Get the keyed event object */
Status = ObReferenceObjectByHandle(Handle,
EVENT_MODIFY_STATE,
KEYEDEVENT_WAIT,
ExKeyedEventObjectType,
PreviousMode,
(PVOID*)&KeyedEvent,
@@ -493,7 +493,7 @@ NtReleaseKeyedEvent(
{
/* Get the keyed event object */
Status = ObReferenceObjectByHandle(Handle,
EVENT_MODIFY_STATE,
KEYEDEVENT_WAKE,
ExKeyedEventObjectType,
PreviousMode,
(PVOID*)&KeyedEvent,