}
#if DBG
+VOID
+ASSERT_LOCK_ORDER(
+ _In_ UCHAR objt)
+{
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ ULONG i;
+
+ if (pti)
+ {
+ /* Ensure correct locking order! */
+ for (i = objt + 1; i < GDIObjTypeTotal; i++)
+ {
+ NT_ASSERT(pti->acExclusiveLockCount[i] == 0);
+ }
+ }
+}
#define ASSERT_SHARED_OBJECT_TYPE(objt) \
ASSERT((objt) == GDIObjType_SURF_TYPE || \
(objt) == GDIObjType_PAL_TYPE || \
#define ASSERT_TRYLOCK_OBJECT_TYPE(objt) \
ASSERT((objt) == GDIObjType_DRVOBJ_TYPE)
#else
+#define ASSERT_LOCK_ORDER(hobj)
#define ASSERT_SHARED_OBJECT_TYPE(objt)
#define ASSERT_EXCLUSIVE_OBJECT_TYPE(objt)
#define ASSERT_TRYLOCK_OBJECT_TYPE(objt)
return NULL;
}
+ /* Make sure lock order is correct */
+ ASSERT_LOCK_ORDER(objt);
+
/* Reference the handle entry */
pentry = ENTRY_ReferenceEntryByHandle(hobj, 0);
if (!pentry)
return NULL;
}
+ /* Make sure lock order is correct */
+ ASSERT_LOCK_ORDER(objt);
+
/* Reference the handle entry */
pentry = ENTRY_ReferenceEntryByHandle(hobj, 0);
if (!pentry)