AudioFile.cpp
上传用户:mony888
上传日期:2022-07-26
资源大小:1247k
文件大小:2k
源码类别:

Windows CE

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. //#include "AudioFile.h"
  3. AudioFile::AudioFile()
  4. {
  5. m_pFileHdr = NULL;
  6. }
  7. AudioFile::~AudioFile()
  8. {
  9. }
  10. BOOL AudioFile::ToClos()
  11. {
  12. return CloseHandle(m_fh);
  13. }
  14. MMRESULT AudioFile::ToOpen(LPCTSTR lpFileName, PVOID pFilehdr, DWORD cbHdrSiz, OpenMod Flags)
  15. {
  16. DWORD cbBytsDone;
  17. if (READ == Flags)
  18. {
  19. m_fh = CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
  20. if (INVALID_HANDLE_VALUE == m_fh)
  21. {
  22. return MMSYSERR_ERROR;
  23. }
  24. if (!ReadFile(m_fh, pFilehdr, cbHdrSiz, &cbBytsDone, NULL) || cbBytsDone < cbHdrSiz)
  25. {
  26. return MMSYSERR_ERROR;
  27. }
  28. return MMSYSERR_NOERROR;
  29. }
  30. else if (WRIT == Flags)
  31. {
  32. m_fh = CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  33. if (INVALID_HANDLE_VALUE == m_fh)
  34. {
  35. return MMSYSERR_ERROR;
  36. }
  37. if (!WriteFile(m_fh, pFilehdr, cbHdrSiz, &cbBytsDone, NULL) || cbBytsDone < cbHdrSiz)
  38. {
  39. return MMSYSERR_ERROR;
  40. }
  41. return MMSYSERR_NOERROR;
  42. }
  43. else
  44. {
  45. return MMSYSERR_INVALPARAM;
  46. }
  47. }
  48. MMRESULT AudioFile::ToRead(PBYTE pBuf, DWORD cbSiz2Read, PDWORD pcbSizRead)
  49. {
  50. if (!ReadFile(m_fh, pBuf, cbSiz2Read, pcbSizRead, NULL))
  51. {
  52. return MMSYSERR_ERROR;
  53. }
  54. return MMSYSERR_NOERROR;
  55. }
  56. MMRESULT AudioFile::ToWrit(PBYTE pData, DWORD cbSiz2Writ, PDWORD pcbSizWrot)
  57. {
  58. if (!WriteFile(m_fh, pData, cbSiz2Writ, pcbSizWrot, NULL) || *pcbSizWrot < cbSiz2Writ)
  59. {
  60. return MMSYSERR_ERROR;
  61. }
  62. return MMSYSERR_NOERROR;
  63. }