util.c
上传用户:yuandong
上传日期:2022-08-08
资源大小:954k
文件大小:1k
源码类别:

Delphi控件源码

开发平台:

C++ Builder

  1. /*++
  2. Copyright (c) 1990-1998  Microsoft Corporation
  3. All rights reserved
  4. Module Name:
  5.    util.c
  6. --*/
  7. #include "local.h"
  8. LPVOID
  9. ReallocSplMem(
  10.     LPVOID pOldMem,
  11.     DWORD cbOld,
  12.     DWORD cbNew
  13.     )
  14. {
  15.     LPVOID pNewMem;
  16.     pNewMem=AllocSplMem(cbNew);
  17.     if (pOldMem && pNewMem) {
  18.         if (cbOld) {
  19.             CopyMemory( pNewMem, pOldMem, min(cbNew, cbOld));
  20.         }
  21.         FreeSplMem(pOldMem);
  22.     }
  23.     return pNewMem;
  24. }
  25. LPWSTR
  26. AllocSplStr(
  27.     LPWSTR pStr
  28.     )
  29. /*++
  30. Routine Description:
  31.     This function will allocate enough local memory to store the specified
  32.     string, and copy that string to the allocated memory
  33. Arguments:
  34.     pStr - Pointer to the string that needs to be allocated and stored
  35. Return Value:
  36.     NON-NULL - A pointer to the allocated memory containing the string
  37.     FALSE/NULL - The operation failed. Extended error status is available
  38.     using GetLastError.
  39. --*/
  40. {
  41.     LPWSTR pMem;
  42.     DWORD  cbStr;
  43.     if (!pStr) {
  44.         return NULL;
  45.     }
  46.     cbStr = wcslen(pStr)*sizeof(WCHAR) + sizeof(WCHAR);
  47.     if (pMem = AllocSplMem( cbStr )) {
  48.         CopyMemory( pMem, pStr, cbStr );
  49.     }
  50.     return pMem;
  51. }
  52. LPVOID
  53. AllocSplMem(
  54.     DWORD cbAlloc
  55.     )
  56. {
  57.     PVOID pvMemory;
  58.     pvMemory = GlobalAlloc(GMEM_FIXED, cbAlloc);
  59.     if( pvMemory ){
  60.         ZeroMemory( pvMemory, cbAlloc );
  61.     }
  62.     return pvMemory;
  63. }