return(TRUE);
}
-#ifndef LIBCAPTIVE
-
static BOOLEAN EiRemoveSharedOwner(PERESOURCE Resource,
ERESOURCE_THREAD ResourceThreadId)
/*
return(FALSE);
}
+#ifndef LIBCAPTIVE
+
static BOOLEAN EiAddSharedOwner(PERESOURCE Resource)
/*
* FUNCTION: Adds the current thread to the shared owners of the resource
Resource->OwnerThreads[1].a.OwnerCount=0;
}
+#endif /* LIBCAPTIVE */
+
VOID
FASTCALL
ExReleaseResourceLite (
ExGetCurrentResourceThread()));
}
+#ifndef LIBCAPTIVE
+
VOID
STDCALL
ExReleaseResourceForThread (
return(ExReleaseResourceForThreadLite(Resource,ResourceThreadId));
}
+#endif /* LIBCAPTIVE */
+
VOID
STDCALL
ExReleaseResourceForThreadLite (
Resource->NumberOfSharedWaiters);
if (Resource->NumberOfSharedWaiters)
{
+#ifndef LIBCAPTIVE
DPRINT("Releasing semaphore\n");
KeReleaseSemaphore(Resource->SharedWaiters,
IO_NO_INCREMENT,
Resource->NumberOfSharedWaiters,
FALSE);
+#else /* !LIBCAPTIVE */
+ KeBugCheck(0);
+#endif /* !LIBCAPTIVE */
}
KeReleaseSpinLock(&Resource->SpinLock, oldIrql);
DPRINT("ExReleaseResourceForThreadLite() finished\n");
DPRINT("ExReleaseResourceForThreadLite() finished\n");
}
+#ifndef LIBCAPTIVE
VOID
STDCALL