3 typedef struct INTENG_ENTER_LEAVE_TAG
5 /* Contents is private to EngEnter/EngLeave */
9 CLIPOBJ
*TrivialClipObj
;
12 } INTENG_ENTER_LEAVE
, *PINTENG_ENTER_LEAVE
;
14 extern BOOL APIENTRY
IntEngEnter(PINTENG_ENTER_LEAVE EnterLeave
,
21 extern BOOL APIENTRY
IntEngLeave(PINTENG_ENTER_LEAVE EnterLeave
);
23 extern HGDIOBJ StockObjects
[];
24 extern SHORT gusLanguageID
;
26 SHORT FASTCALL
UserGetLanguageID(VOID
);
27 PVOID APIENTRY
HackSecureVirtualMemory(IN PVOID
,IN SIZE_T
,IN ULONG
,OUT PVOID
*);
28 VOID APIENTRY
HackUnsecureVirtualMemory(IN PVOID
);
40 IN PCWSTR pwszValueName
,
43 IN OUT PULONG pcbValue
);
47 RegWriteSZ(HKEY hkey
, PWSTR pwszValue
, PWSTR pwszData
);
51 RegWriteDWORD(HKEY hkey
, PWSTR pwszValue
, DWORD dwData
);
55 RegReadDWORD(HKEY hkey
, PWSTR pwszValue
, PDWORD pdwData
);
61 typedef struct _GDI_POOL
*PGDI_POOL
;
71 GdiPoolDestroy(PGDI_POOL pPool
);
86 ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock
)
88 /* Try acquiring the lock */
89 if (InterlockedBitTestAndSet((PLONG
)PushLock
, EX_PUSH_LOCK_LOCK_V
))
91 /* Someone changed it, use the slow path */
92 ExfAcquirePushLockExclusive(PushLock
);
98 ExTryAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock
)
100 /* Try acquiring the lock */
101 return !InterlockedBitTestAndSet((PLONG
)PushLock
, EX_PUSH_LOCK_LOCK_V
);
106 ExReleasePushLockExclusive(PEX_PUSH_LOCK PushLock
)
108 EX_PUSH_LOCK OldValue
;
110 /* Unlock the pushlock */
111 OldValue
.Value
= InterlockedExchangeAddSizeT((PSIZE_T
)PushLock
,
112 -(SSIZE_T
)EX_PUSH_LOCK_LOCK
);
113 /* Check if anyone is waiting on it and it's not already waking */
114 if ((OldValue
.Waiting
) && !(OldValue
.Waking
))
117 ExfTryToWakePushLock(PushLock
);
123 _ExInitializePushLock(PEX_PUSH_LOCK Lock
)
125 *(PULONG_PTR
)Lock
= 0;
127 #define ExInitializePushLock _ExInitializePushLock
130 IntSafeCopyUnicodeString(PUNICODE_STRING Dest
,
131 PUNICODE_STRING Source
);
134 IntSafeCopyUnicodeStringTerminateNULL(PUNICODE_STRING Dest
,
135 PUNICODE_STRING Source
);
137 HBITMAP NTAPI
UserLoadImage(PCWSTR
);
139 BOOL NTAPI
W32kDosPathNameToNtPathName(PCWSTR
, PUNICODE_STRING
);