Test.cpp
上传用户:sdguojin
上传日期:2022-07-31
资源大小:1726k
文件大小:2k
源码类别:

系统编程

开发平台:

Visual C++

  1. // Test.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "aplib.h"
  5. #include <windows.h>
  6. #include <malloc.h>
  7. #include "PELib.h"
  8. #pragma comment(lib,"aplib")
  9. using namespace PELib;
  10. int testcase1()
  11. {
  12. TCHAR szFileName[MAX_PATH] = _T("C:\Documents and Settings\Administrator\桌面\1.txt");
  13. TCHAR szDstFile[MAX_PATH] = _T("C:\Documents and Settings\Administrator\桌面\pack.txt");
  14. HANDLE hOpenFile = CreateFile(
  15. szFileName,
  16. GENERIC_READ,
  17. NULL,NULL,
  18. OPEN_EXISTING,
  19. NULL,NULL);
  20. if(hOpenFile == INVALID_HANDLE_VALUE)
  21. goto Exit0;
  22. DWORD dwSize = GetFileSize(hOpenFile, NULL);
  23. LPVOID lpSrc = malloc(dwSize);
  24. if ( !lpSrc )
  25. {
  26. goto Exit0;
  27. }
  28. memset(lpSrc, 0, dwSize);
  29. DWORD dwTempNum = 0;
  30. ReadFile(hOpenFile, lpSrc, dwSize, &dwTempNum, NULL);
  31. size_t stSize = aP_workmem_size(dwSize);
  32. if(!stSize)
  33. goto Exit0;
  34. LPVOID lpWork = malloc(stSize);
  35. if(!lpWork)
  36. goto Exit0;
  37. memset(lpWork,0,stSize);
  38. size_t stDst = aP_max_packed_size(dwSize);
  39. if( !stDst )
  40. goto Exit0;
  41. LPVOID lpDst = malloc(stDst);
  42. if ( !stDst )
  43. goto Exit0;
  44. memset(lpDst, 0, stDst);
  45. size_t stPack = aP_pack(lpSrc, lpDst, dwSize, lpWork, NULL, NULL);
  46. if( stPack == APLIB_ERROR )
  47. goto Exit0;
  48. HANDLE hDstFile = CreateFile(
  49. szDstFile, 
  50. GENERIC_WRITE, 
  51. FILE_SHARE_READ, 
  52. NULL, 
  53. OPEN_ALWAYS, 
  54. FILE_ATTRIBUTE_NORMAL, 
  55. NULL);
  56. if( hDstFile == INVALID_HANDLE_VALUE )
  57. goto Exit0;
  58. WriteFile(hDstFile, lpDst, stDst, &dwTempNum, NULL);
  59. Exit0:
  60. if( hOpenFile )
  61. CloseHandle(hOpenFile);
  62. if ( lpSrc )
  63. free(lpSrc);
  64. if( lpWork )
  65. free(lpWork);
  66. if( lpDst )
  67. free(lpDst);
  68. if( hDstFile )
  69. CloseHandle(hDstFile);
  70. getchar();
  71. return 0;
  72. }
  73. #pragma comment(lib "BeginPack")
  74. int testcase2()
  75. {
  76. wstring strFileName = L"E:\学习工程\Begin09Pack\Test.exe";
  77. CPELib pe;
  78. pe.Init(strFileName);
  79. return 0;
  80. }
  81. int _tmain(int argc, _TCHAR* argv[])
  82. {
  83. testcase2();
  84. return 0;
  85. }