windows-nt/Source/XPSP1/NT/printscan/print/spooler/prtprocs/winprint/util.c
2020-09-26 16:20:57 +08:00

107 lines
1.5 KiB
C

/*++
Copyright (c) 1990-1998 Microsoft Corporation
All rights reserved
Module Name:
util.c
// @@BEGIN_DDKSPLIT
Abstract:
Environment:
User Mode -Win32
NOTE: THIS IS FOR THE DDK ONLY!
Revision History:
// @@END_DDKSPLIT
--*/
#include "local.h"
LPVOID
ReallocSplMem(
LPVOID pOldMem,
DWORD cbOld,
DWORD cbNew
)
{
LPVOID pNewMem;
pNewMem=AllocSplMem(cbNew);
if (pOldMem && pNewMem) {
if (cbOld) {
CopyMemory( pNewMem, pOldMem, min(cbNew, cbOld));
}
FreeSplMem(pOldMem);
}
return pNewMem;
}
LPWSTR
AllocSplStr(
LPWSTR pStr
)
/*++
Routine Description:
This function will allocate enough local memory to store the specified
string, and copy that string to the allocated memory
Arguments:
pStr - Pointer to the string that needs to be allocated and stored
Return Value:
NON-NULL - A pointer to the allocated memory containing the string
FALSE/NULL - The operation failed. Extended error status is available
using GetLastError.
--*/
{
LPWSTR pMem;
DWORD cbStr;
if (!pStr) {
return NULL;
}
cbStr = wcslen(pStr)*sizeof(WCHAR) + sizeof(WCHAR);
if (pMem = AllocSplMem( cbStr )) {
CopyMemory( pMem, pStr, cbStr );
}
return pMem;
}
LPVOID
AllocSplMem(
DWORD cbAlloc
)
{
PVOID pvMemory;
pvMemory = GlobalAlloc(GMEM_FIXED, cbAlloc);
if( pvMemory ){
ZeroMemory( pvMemory, cbAlloc );
}
return pvMemory;
}