winfilereader.cpp.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:1k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #include "winfilereader.h"
  2. #include <windows.h>
  3. WinFileReader::WinFileReader (const char *filename)
  4. {
  5. OFSTRUCT buf;
  6. buf.cBytes = sizeof (OFSTRUCT);
  7. hFile = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ,
  8. NULL, OPEN_EXISTING, 0, NULL);
  9. if (hFile == INVALID_HANDLE_VALUE)
  10. throw 0;
  11. size = GetFileSize (hFile, NULL);
  12. hMapFile = CreateFileMapping (hFile, NULL, PAGE_READONLY,
  13.       0, size, NULL);
  14. if (hMapFile == NULL) {
  15. CloseHandle (hFile);
  16. throw 1;
  17. }
  18. addr = (char *) MapViewOfFile (hMapFile, FILE_MAP_READ, 0, 0, size);
  19. if (addr == NULL) {
  20. CloseHandle (hMapFile);
  21. CloseHandle (hFile);
  22. throw 2;
  23. }
  24. }
  25. WinFileReader::~WinFileReader ()
  26. {
  27. CloseHandle (hMapFile);
  28. CloseHandle (hFile);
  29. }
  30. unsigned int
  31. WinFileReader::getSize ()
  32. {
  33. return (unsigned int) size;
  34. }
  35. unsigned int
  36. WinFileReader::readInt (unsigned int offset)
  37. {
  38. unsigned int *i;
  39. i = (unsigned int *) &(addr[offset]);
  40. return *i;
  41. }
  42. const char *
  43. WinFileReader::readStr (unsigned int offset)
  44. {
  45. const char *s;
  46. s = (const char *) &(addr[offset]);
  47. return s;
  48. }