[NTOSKRNL]
[reactos.git] / reactos / ntoskrnl / ex / callback.c
index 202e294..99bd8aa 100644 (file)
@@ -17,9 +17,9 @@
 /* Mapping for Callback Object */
 GENERIC_MAPPING ExpCallbackMapping =
 {
-    CALLBACK_READ,
-    CALLBACK_WRITE,
-    CALLBACK_EXECUTE,
+    STANDARD_RIGHTS_READ,
+    STANDARD_RIGHTS_WRITE | CALLBACK_MODIFY_STATE,
+    STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE,
     CALLBACK_ALL_ACCESS
 };
 
@@ -59,7 +59,7 @@ ExAllocateCallBack(IN PEX_CALLBACK_FUNCTION Function,
     /* Allocate a callback */
     CallbackBlock = ExAllocatePoolWithTag(PagedPool,
                                           sizeof(EX_CALLBACK_ROUTINE_BLOCK),
-                                          'CbRb');
+                                          TAG_CALLBACK_ROUTINE_BLOCK);
     if (CallbackBlock)
     {
         /* Initialize it */
@@ -77,7 +77,7 @@ NTAPI
 ExFreeCallBack(IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock)
 {
     /* Just free it from memory */
-    ExFreePool(CallbackBlock);
+    ExFreePoolWithTag(CallbackBlock, TAG_CALLBACK_ROUTINE_BLOCK);
 }
 
 VOID
@@ -124,7 +124,7 @@ ExReferenceCallBackBlock(IN OUT PEX_CALLBACK CallBack)
     EX_FAST_REF OldValue;
     ULONG_PTR Count;
     PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock;
-    
+
     /* Acquire a reference */
     OldValue = ExAcquireFastReference(&CallBack->RoutineBlock);
     Count = ExGetCountFastReference(OldValue);
@@ -140,10 +140,10 @@ ExReferenceCallBackBlock(IN OUT PEX_CALLBACK CallBack)
         ASSERT(FALSE);
         return NULL;
     }
-    
+
     /* Get the callback block */
     CallbackBlock = ExGetObjectFastReference(OldValue);
-    
+
     /* Check if this is the last reference */
     if (Count == 1)
     {
@@ -173,7 +173,7 @@ ExCompareExchangeCallBack(IN OUT PEX_CALLBACK CallBack,
 {
     EX_FAST_REF OldValue;
     PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock;
-    ULONG_PTR Count;
+    ULONG Count;
 
     /* Check that we have a new block */
     if (NewBlock)
@@ -187,7 +187,7 @@ ExCompareExchangeCallBack(IN OUT PEX_CALLBACK CallBack,
             return FALSE;
         }
     }
-    
+
     /* Do the swap */
     OldValue = ExCompareSwapFastReference(&CallBack->RoutineBlock,
                                           NewBlock,
@@ -425,7 +425,7 @@ ExCreateCallback(OUT PCALLBACK_OBJECT *CallbackObject,
                                            0,
                                            ExCallbackObjectType,
                                            KernelMode,
-                                           (PVOID)&Callback,
+                                           (PVOID *)&Callback,
                                            NULL);
 
         /* Close the Handle, since we now have the pointer */
@@ -433,7 +433,10 @@ ExCreateCallback(OUT PCALLBACK_OBJECT *CallbackObject,
     }
 
     /* Everything went fine, so return a pointer to the Object */
-    if (NT_SUCCESS(Status)) *CallbackObject = Callback;
+    if (NT_SUCCESS(Status))
+    {
+        *CallbackObject = Callback;
+    }
     return Status;
 }
 
@@ -567,7 +570,7 @@ ExRegisterCallback(IN PCALLBACK_OBJECT CallbackObject,
     /* Allocate memory for the structure */
     CallbackRegistration = ExAllocatePoolWithTag(NonPagedPool,
                                                  sizeof(CALLBACK_REGISTRATION),
-                                                 CALLBACK_TAG);
+                                                 TAG_CALLBACK_REGISTRATION);
     if (!CallbackRegistration)
     {
         /* Dereference and fail */
@@ -602,7 +605,7 @@ ExRegisterCallback(IN PCALLBACK_OBJECT CallbackObject,
         KeReleaseSpinLock(&CallbackObject->Lock, OldIrql);
 
         /* Free the registration */
-        ExFreePool(CallbackRegistration);
+        ExFreePoolWithTag(CallbackRegistration, TAG_CALLBACK_REGISTRATION);
         CallbackRegistration = NULL;
 
         /* Dereference the object */
@@ -676,7 +679,7 @@ ExUnregisterCallback(IN PVOID CallbackRegistrationHandle)
     KeReleaseSpinLock(&CallbackObject->Lock, OldIrql);
 
     /* Delete this registration */
-    ExFreePool(CallbackRegistration);
+    ExFreePoolWithTag(CallbackRegistration, TAG_CALLBACK_REGISTRATION);
 
     /* Remove the reference */
     ObDereferenceObject(CallbackObject);