mem.c
上传用户:looem2003
上传日期:2014-07-20
资源大小:13733k
文件大小:2k
源码类别:

打印编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1990-2001  Microsoft Corporation
  3. All Rights Reserved
  4. Module Name:
  5.     mem.c
  6. --*/
  7. #include "precomp.h"
  8. #pragma hdrstop
  9. #include "mem.h"
  10. LPWSTR
  11. AllocSplStr(
  12.     IN  LPCWSTR pStr
  13.     )
  14. /*++
  15. Routine Description:
  16.     This function will allocate memory to store the specified
  17.     string, and copy that string to the allocated memory
  18. Arguments:
  19.     pStr - Pointer to the string that needs to be allocated and stored
  20. Return Value:
  21.     NON-NULL - A pointer to the allocated memory containing the string
  22.     FALSE/NULL - The operation failed. Extended error status is available
  23.     using GetLastError.
  24. --*/
  25. {
  26.     LPWSTR pMem;
  27.     DWORD  cbStr;
  28.     if (!pStr) {
  29.         return NULL;
  30.     }
  31.     cbStr = wcslen(pStr)*sizeof(WCHAR) + sizeof(WCHAR);
  32.     if (pMem = (LPWSTR)AllocSplMem( cbStr )) {
  33.         CopyMemory( pMem, pStr, cbStr );
  34.     }
  35.     return pMem;
  36. }
  37. BOOL
  38. FreeSplStr(
  39.     __in    LPWSTR pStr
  40.     )
  41. /*++
  42. Routine Description:
  43.     This function will release the memory allocated with a call
  44.     to AllocSplStr
  45. Arguments:
  46.     pStr - Pointer to the string to release
  47. Return Value:
  48.     TRUE memory was release, FALSE an error occurred, use GetLastError
  49.     for extended error information.
  50. --*/
  51. {
  52.     return FreeSplMem(pStr);
  53. }
  54. LPVOID
  55. AllocSplMem(
  56.     DWORD cbAlloc
  57.     )
  58. /*++
  59. Routine Description:
  60.     This function allocates the specified amount of memory.
  61. Arguments:
  62.     cbAlloc - number in byte of memory to allocate
  63. Return Value:
  64.     Pointer to newly alloated memory block on success, NULL on failure use
  65.     GetLastError for extended error information.
  66. --*/
  67. {
  68.     PVOID pvMemory;
  69.     pvMemory = GlobalAlloc(GMEM_FIXED, cbAlloc);
  70.     if( pvMemory ){
  71.         ZeroMemory( pvMemory, cbAlloc );
  72.     }
  73.     return pvMemory;
  74. }
  75. BOOL
  76. FreeSplMem(
  77.     __in    PVOID pMem
  78.     )
  79. /*++
  80. Routine Description:
  81.     This function release the specified memory block.
  82. Arguments:
  83.     pMem - pointer to memory block
  84. Return Value:
  85.     TRUE memoy block was release, FALSE on failure.
  86. --*/
  87. {
  88.     return GlobalFree( pMem ) ? FALSE : TRUE;
  89. }