VOID
NTAPI
+INIT_FUNCTION
CmpInitCallback(VOID)
{
ULONG i;
ASSERT(Function && Cookie);
Callback = ExAllocatePoolWithTag(PagedPool,
- sizeof(REGISTRY_CALLBACK),
- 'bcMC');
- if (Callback != NULL)
+ sizeof(REGISTRY_CALLBACK),
+ 'bcMC');
+ if (Callback == NULL)
{
- /* initialize the callback */
- ExInitializeRundownProtection(&Callback->RundownRef);
- Callback->Function = Function;
- Callback->Context = Context;
- Callback->PendingDelete = FALSE;
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
- /* add it to the callback list and receive a cookie for the callback */
- ExAcquireFastMutex(&CmiCallbackLock);
+ /* initialize the callback */
+ ExInitializeRundownProtection(&Callback->RundownRef);
+ Callback->Function = Function;
+ Callback->Context = Context;
+ Callback->PendingDelete = FALSE;
- /* FIXME - to receive a unique cookie we'll just return the pointer to the
- callback object */
- Callback->Cookie.QuadPart = (ULONG_PTR)Callback;
- InsertTailList(&CmiCallbackHead, &Callback->ListEntry);
+ /* add it to the callback list and receive a cookie for the callback */
+ ExAcquireFastMutex(&CmiCallbackLock);
- ExReleaseFastMutex(&CmiCallbackLock);
+ /* FIXME - to receive a unique cookie we'll just return the pointer to the
+ callback object */
+ Callback->Cookie.QuadPart = (ULONG_PTR)Callback;
+ InsertTailList(&CmiCallbackHead, &Callback->ListEntry);
- *Cookie = Callback->Cookie;
- return STATUS_SUCCESS;
- }
+ ExReleaseFastMutex(&CmiCallbackLock);
- return STATUS_INSUFFICIENT_RESOURCES;
+ *Cookie = Callback->Cookie;
+ return STATUS_SUCCESS;
}
/*