[NTOS:MM] Quick fix: use SIZE_T instead of ULONG, because ULONG is 32-bit and on...
[reactos.git] / ntoskrnl / ex / callback.c
index d420d3d..6ef8797 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 */
-    ExFreePoolWithTag(CallbackBlock, CALLBACK_TAG);
+    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)
     {
@@ -221,7 +221,7 @@ ExCompareExchangeCallBack(IN OUT PEX_CALLBACK CallBack,
         /* It failed, check if we had a block */
         if (NewBlock)
         {
-            /* We did, remove the refernces that we had added */
+            /* We did, remove the references that we had added */
             ExfReleaseRundownProtectionEx(&NewBlock->RundownProtect,
                                           MAX_FAST_REFS + 1);
         }
@@ -333,7 +333,7 @@ ExpInitializeCallbacks(VOID)
  * @implemented
  *
  * Opens or creates a Callback Object. Creates only if Create is true.
- * Allows multiple Callback Functions to be registred only if
+ * Allows multiple Callback Functions to be registered only if
  * AllowMultipleCallbacks is true.
  * See: http://www.osronline.com/ddkx/kmarch/k102_967m.htm
  *      http://www.osronline.com/article.cfm?id=24
@@ -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 */
-        ExFreePoolWithTag(CallbackRegistration, CALLBACK_TAG);
+        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 */
-    ExFreePoolWithTag(CallbackRegistration, CALLBACK_TAG);
+    ExFreePoolWithTag(CallbackRegistration, TAG_CALLBACK_REGISTRATION);
 
     /* Remove the reference */
     ObDereferenceObject(CallbackObject);