1 #ifndef _WIN32K_NTUSER_H
2 #define _WIN32K_NTUSER_H
9 extern FAST_MUTEX UserLock
;
11 #define DECLARE_RETURN(type) type _ret_
12 #define RETURN(value) { _ret_ = value; goto _cleanup_; }
13 #define CLEANUP /*unreachable*/ ASSERT(FALSE); _cleanup_
14 #define END_CLEANUP return _ret_;
17 #define UserEnterCo() UserEnterExclusive()
18 #define UserLeaveCo() UserLeave()
20 #define UserEnterShared() UserEnterExclusive()
22 #define UserEnterExclusive() \
24 /* DPRINT1("try xlock, %s, %i (%i)\n",__FILE__,__LINE__, _locked);*/ \
25 if (UserLock.Owner == KeGetCurrentThread()){ \
26 DPRINT1("file %s, line %i\n",_file, _line); \
29 UUserEnterExclusive(); \
30 ASSERT(InterlockedIncrement((PLONG)(&_locked)) == 1 /*> 0*/); \
31 _file = __FILE__; _line = __LINE__; \
32 /* DPRINT("got lock, %s, %i (%i)\n",__FILE__,__LINE__, _locked);*/ \
37 ASSERT(InterlockedDecrement((PLONG)(&_locked)) == 0/*>= 0*/); \
38 /*DPRINT("unlock, %s, %i (%i)\n",__FILE__,__LINE__, _locked);*/ \
39 if (UserLock.Owner != KeGetCurrentThread()) { \
40 DPRINT1("file %s, line %i\n",_file, _line); \
43 _file = __FILE__; _line = __LINE__; \
49 NTSTATUS FASTCALL
InitUserImpl(VOID
);
50 VOID FASTCALL
UninitUser(VOID
);
51 VOID FASTCALL
UUserEnterShared(VOID
);
52 VOID FASTCALL
UUserEnterExclusive(VOID
);
53 VOID FASTCALL
UUserLeave(VOID
);
54 BOOL FASTCALL
UserIsEntered();
58 #endif /* _WIN32K_NTUSER_H */