UTIL.C
上传用户:yuandong
上传日期:2022-08-08
资源大小:954k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

C++ Builder

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