1 #pragma once 2 3 #define UserEnterCo UserEnterExclusive 4 #define UserLeaveCo UserLeave 5 6 typedef VOID (*TL_FN_FREE)(PVOID); 7 8 /* Thread Lock structure */ 9 typedef struct _TL 10 { 11 struct _TL* next; 12 PVOID pobj; 13 TL_FN_FREE pfnFree; 14 } TL, *PTL; 15 16 extern PSERVERINFO gpsi; 17 extern PTHREADINFO gptiCurrent; 18 extern PPROCESSINFO gppiList; 19 extern PPROCESSINFO ppiScrnSaver; 20 extern PPROCESSINFO gppiInputProvider; 21 extern BOOL g_AlwaysDisplayVersion; 22 extern ATOM gaGuiConsoleWndClass; 23 extern ATOM AtomDDETrack; 24 extern ATOM AtomQOS; 25 extern ATOM AtomImeLevel; 26 extern ERESOURCE UserLock; 27 28 CODE_SEG("INIT") NTSTATUS NTAPI InitUserImpl(VOID); 29 VOID FASTCALL CleanupUserImpl(VOID); 30 VOID FASTCALL UserEnterShared(VOID); 31 VOID FASTCALL UserEnterExclusive(VOID); 32 VOID FASTCALL UserLeave(VOID); 33 BOOL FASTCALL UserIsEntered(VOID); 34 BOOL FASTCALL UserIsEnteredExclusive(VOID); 35 DWORD FASTCALL UserGetLanguageToggle(_In_ LPCWSTR pszType, _In_ DWORD dwDefaultValue); 36 37 _Success_(return != FALSE) 38 BOOL 39 NTAPI 40 RegReadUserSetting( 41 _In_z_ PCWSTR pwszKeyName, 42 _In_z_ PCWSTR pwszValueName, 43 _In_ ULONG ulType, 44 _Out_writes_bytes_(cjDataSize) _When_(ulType == REG_SZ, _Post_z_) PVOID pvData, 45 _In_ ULONG cjDataSize); 46 47 _Success_(return != FALSE) 48 BOOL 49 NTAPI 50 RegWriteUserSetting( 51 _In_z_ PCWSTR pwszKeyName, 52 _In_z_ PCWSTR pwszValueName, 53 _In_ ULONG ulType, 54 _In_reads_bytes_(cjDataSize) const VOID *pvData, 55 _In_ ULONG cjDataSize); 56 57 PGRAPHICS_DEVICE 58 NTAPI 59 InitDisplayDriver( 60 IN PWSTR pwszDeviceName, 61 IN PWSTR pwszRegKey); 62 63 /* EOF */ 64