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.
|
|
#ifndef POOLMEM_H
#define POOLMEM_H
typedef LPVOID POOLHANDLE;
#define POOLMEMORYBLOCKSIZE 8192
POOLHANDLE WINAPI PoolMemInitPool (); VOID WINAPI PoolMemDestroyPool (IN POOLHANDLE Handle); LPVOID WINAPI PoolMemGetAlignedMemory(IN POOLHANDLE Handle, IN DWORD Size, IN DWORD AlignSize);
#define PoolMemCreateString(h,x) ((LPTSTR) PoolMemGetAlignedMemory((h),(x)*sizeof(TCHAR)))
#define PoolMemCreateDword(h) ((PDWORD) PoolMemGetMemory((h),sizeof(DWORD)))
__inline LPVOID PoolMemGetMemory ( IN POOLHANDLE Handle, IN DWORD Size ) {
return PoolMemGetAlignedMemory(Handle,Size,0);
}
__inline LPTSTR PoolMemCreateStringA ( IN POOLHANDLE Handle, IN DWORD Size ) { return (LPSTR) PoolMemGetAlignedMemory(Handle,Size * sizeof(CHAR),sizeof(CHAR)); }
__inline LPWSTR PoolMemCreateStringW ( IN POOLHANDLE Handle, IN DWORD Size ) { return (LPWSTR) PoolMemGetAlignedMemory(Handle,Size * sizeof(WCHAR),sizeof(WCHAR)); }
__inline PTSTR PoolMemDuplicateStringA ( IN POOLHANDLE Handle, IN LPCSTR StringToCopy )
{
DWORD stringLength; PSTR rString;
assert(StringToCopy);
stringLength = (DWORD) _mbschr(StringToCopy,0) - (DWORD) StringToCopy + 1; rString = PoolMemGetAlignedMemory(Handle,stringLength,sizeof(CHAR));
if (rString) {
_mbscpy(rString,StringToCopy); }
return rString; }
__inline PWSTR PoolMemDuplicateStringW ( IN POOLHANDLE Handle, IN LPCWSTR StringToCopy )
{
DWORD stringLength; PWSTR rString;
assert(StringToCopy);
stringLength = ((wcslen(StringToCopy)+1)*sizeof(WCHAR)); rString = PoolMemGetAlignedMemory(Handle,stringLength,sizeof(WCHAR));
if (rString) {
wcscpy(rString,StringToCopy); }
return rString; }
#endif
|