2 #undef WIN32_LEAN_AND_MEAN
5 #include <win32k/bitmaps.h>
6 #include <win32k/debug.h>
7 #include <win32k/debug1.h>
9 #include <ddk/winddi.h>
10 #include "../eng/objects.h"
11 #include <include/error.h>
18 EngCreateSemaphore ( VOID )
20 // www.osr.com/ddk/graphics/gdifncs_95lz.htm
21 PERESOURCE psem = ExAllocatePool ( NonPagedPool, sizeof(ERESOURCE) );
24 if ( !NT_SUCCESS(ExInitializeResourceLite ( psem )) )
29 return (HSEMAPHORE)psem;
37 EngAcquireSemaphore ( IN HSEMAPHORE hsem )
39 // www.osr.com/ddk/graphics/gdifncs_14br.htm
41 ExAcquireResourceExclusiveLite ( (PERESOURCE)hsem, TRUE );
49 EngReleaseSemaphore ( IN HSEMAPHORE hsem )
51 // www.osr.com/ddk/graphics/gdifncs_5u3r.htm
53 ExReleaseResourceLite ( (PERESOURCE)hsem );
61 EngDeleteSemaphore ( IN HSEMAPHORE hsem )
63 // www.osr.com/ddk/graphics/gdifncs_13c7.htm
65 ExFreePool ( (PVOID)hsem );
73 EngIsSemaphoreOwned ( IN HSEMAPHORE hsem )
75 // www.osr.com/ddk/graphics/gdifncs_6wmf.htm
77 return (((PERESOURCE)hsem)->ActiveCount > 0);
85 EngIsSemaphoreOwnedByCurrentThread ( IN HSEMAPHORE hsem )
87 // www.osr.com/ddk/graphics/gdifncs_9yxz.htm
89 return ExIsResourceAcquiredExclusiveLite ( (PERESOURCE)hsem );