Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

203 lines
4.3 KiB

//
// Debug message types
//
#define DM_WARNING 0
#define DM_ASSERT 1
#define DM_VERBOSE 2
//
// Debug macros
//
#ifdef DBG
#define DEBUGMSG(x) _DebugMsg x
VOID _DebugMsg(UINT mask, PCSTR pszMsg, ...);
#define DMASSERT(x) if (!(x)) \
_DebugMsg(DM_ASSERT,"profmap.dll assertion " #x " failed\n, line %u of %s", __LINE__, TEXT(__FILE__));
#else
#define DEBUGMSG(x)
#define DMASSERT(x)
#endif
//
// userenv.c
//
BOOL OurConvertSidToStringSid (PSID Sid, PWSTR *SidString);
VOID DeleteSidString (PWSTR SidString);
BOOL RegDelnode (HKEY KeyRoot, PWSTR SubKey);
PACL
CreateDefaultAcl (
PSID pSid
);
VOID
FreeDefaultAcl (
PACL Acl OPTIONAL
);
BOOL
GetProfileRoot (
IN PSID Sid,
OUT PWSTR ProfileDir
);
#define USER_PROFILE_MUTEX TEXT("Global\\userenv: User Profile Mutex for ")
#define PROFILE_LIST_PATH TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList")
#define PROFILE_IMAGE_VALUE_NAME TEXT("ProfileImagePath")
#define PROFILE_GUID TEXT("Guid")
#define PROFILE_GUID_PATH TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\ProfileGuid")
#define WINDOWS_POLICIES_KEY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies")
#define ROOT_POLICIES_KEY TEXT("Software\\Policies")
BOOL
UpdateProfileSecurity (
PSID Sid
);
BOOL DeleteProfileRegistrySettings (LPTSTR lpSidString);
PSID GetUserSid (HANDLE UserToken);
VOID DeleteUserSid(PSID Sid);
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
LONG MyRegLoadKey(HKEY hKey, LPTSTR lpSubKey, LPTSTR lpFile);
BOOL MyRegUnLoadKey(HKEY hKey, LPTSTR lpSubKey);
BOOL SetupNewHive(LPTSTR lpSidString, PSID pSid);
DWORD ApplySecurityToRegistryTree(HKEY RootKey, PSECURITY_DESCRIPTOR pSD);
BOOL SecureUserKey(LPTSTR lpKey, PSID pSid);
LPWSTR ProduceWFromA(LPCSTR pszA);
BOOL IsUserAnAdminMember(HANDLE hToken);
//
// Stuff lifted from win9x upgrade code
//
#define MemAlloc(s) LocalAlloc(LPTR,s)
#define MemReAlloc(x,s) LocalReAlloc(x,s,LMEM_MOVEABLE)
#define MemFree(x) LocalFree(x)
typedef struct {
PBYTE Buf;
DWORD Size;
DWORD End;
DWORD GrowSize;
DWORD UserIndex; // Unused by Growbuf. For caller use.
} GROWBUFFER, *PGROWBUFFER;
#define GROWBUF_INIT {NULL,0,0,0,0}
PBYTE
GrowBuffer (
IN OUT PGROWBUFFER GrowBuf,
IN DWORD SpaceNeeded
);
VOID
FreeGrowBuffer (
IN PGROWBUFFER GrowBuf
);
typedef struct {
GROWBUFFER ListArray;
POOLHANDLE ListData;
} GROWLIST, *PGROWLIST;
#define GROWLIST_INIT {GROWBUF_INIT, NULL}
VOID
FreeGrowList (
IN PGROWLIST GrowList
);
PBYTE
GrowListAppend (
IN OUT PGROWLIST GrowList,
IN PBYTE DataToAppend, OPTIONAL
IN UINT SizeOfData
);
PBYTE
RealGrowListAppendAddNul (
IN OUT PGROWLIST GrowList,
IN PBYTE DataToAppend, OPTIONAL
IN UINT SizeOfData
);
#define GrowListAppendAddNul(list,data,size) RealGrowListAppendAddNul (list,data,size)
PBYTE
GrowListGetItem (
IN PGROWLIST GrowList,
IN UINT Index
);
UINT
GrowListGetSize (
IN PGROWLIST GrowList
);
PWSTR
GetEndOfStringW (
PCWSTR p
);
PWSTR
StringCopyABW (
OUT PWSTR Buf,
IN PCWSTR a,
IN PCWSTR b
);
UINT
SizeOfStringW (
PCWSTR str
);
__inline
PCWSTR
RealGrowListAppendStringABW (
IN OUT PGROWLIST GrowList,
IN PCWSTR String,
IN PCWSTR End
)
{
return (PCWSTR) GrowListAppendAddNul (
GrowList,
(PBYTE) String,
String < End ? (UINT)((PBYTE) End - (PBYTE) String) : 0
);
}
#define GrowListAppendStringABW(list,a,b) RealGrowListAppendStringABW(list,a,b)
#define GrowListAppendStringW(list,str) GrowListAppendStringABW(list,str,GetEndOfStringW(str))
#define GrowListAppendStringNW(list,str,len) GrowListAppendStringABW(list,str,CharCountToPointerW(str,len))
#define GrowListGetStringW(list,index) (PCWSTR)(GrowListGetItem(list,index))
#define GrowListAppendEmptyItem(list) GrowListAppend (list,NULL,0)
#ifdef UNICODE
#define GrowListAppendString GrowListAppendStringW
#define GrowListAppendStringAB GrowListAppendStringABW
#define GrowListAppendStringN GrowListAppendStringNW
#define GrowListGetString GrowListGetStringW
#endif