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
);
57 _Success_(return!=FALSE
)
61 _In_z_ PCWSTR pwszKeyName
,
62 _In_z_ PCWSTR pwszValueName
,
64 _Out_writes_(cbDataSize
) _When_(ulType
== REG_SZ
, _Post_z_
) PVOID pvData
,
65 _In_ ULONG cbDataSize
);
70 IN PCWSTR pwszKeyName
,
71 IN PCWSTR pwszValueName
,
80 typedef struct _GDI_POOL
*PGDI_POOL
;
90 GdiPoolDestroy(PGDI_POOL pPool
);
105 ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock
)
107 /* Try acquiring the lock */
108 if (InterlockedBitTestAndSet((PLONG
)PushLock
, EX_PUSH_LOCK_LOCK_V
))
110 /* Someone changed it, use the slow path */
111 ExfAcquirePushLockExclusive(PushLock
);
117 ExTryAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock
)
119 /* Try acquiring the lock */
120 return !InterlockedBitTestAndSet((PLONG
)PushLock
, EX_PUSH_LOCK_LOCK_V
);
125 ExReleasePushLockExclusive(PEX_PUSH_LOCK PushLock
)
127 EX_PUSH_LOCK OldValue
;
129 /* Unlock the pushlock */
130 OldValue
.Value
= InterlockedExchangeAddSizeT((PSIZE_T
)PushLock
,
131 -(SSIZE_T
)EX_PUSH_LOCK_LOCK
);
132 /* Check if anyone is waiting on it and it's not already waking */
133 if ((OldValue
.Waiting
) && !(OldValue
.Waking
))
136 ExfTryToWakePushLock(PushLock
);
142 _ExInitializePushLock(PEX_PUSH_LOCK Lock
)
144 *(PULONG_PTR
)Lock
= 0;
146 #define ExInitializePushLock _ExInitializePushLock
149 IntSafeCopyUnicodeString(PUNICODE_STRING Dest
,
150 PUNICODE_STRING Source
);
153 IntSafeCopyUnicodeStringTerminateNULL(PUNICODE_STRING Dest
,
154 PUNICODE_STRING Source
);
156 HBITMAP NTAPI
UserLoadImage(PCWSTR
);
158 BOOL NTAPI
W32kDosPathNameToNtPathName(PCWSTR
, PUNICODE_STRING
);