home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / msacm.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  7KB  |  187 lines

  1. /*author: Adrian Sandor
  2.   written for MinGW*/
  3. #ifndef _MSACM_H
  4. #define _MSACM_H
  5.  
  6. #if __GNUC__ >= 3
  7. #pragma GCC system_header
  8. #endif
  9.  
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13.  
  14. typedef HANDLE HACMDRIVERID, HACMDRIVER, *LPHACMDRIVER; /*they're handles, right?*/
  15.  
  16. /*found through experimentation*/
  17. #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
  18. #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
  19. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
  20. #define ACMDRIVERDETAILS_LICENSING_CHARS 128
  21.  
  22. /*I don't know the right values for these macros*/
  23. #define ACMFORMATDETAILS_FORMAT_CHARS 256
  24. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256
  25. #define ACMDRIVERDETAILS_FEATURES_CHARS 256
  26.  
  27. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/
  28. typedef struct {
  29.     DWORD          cbStruct;
  30.     DWORD          dwFormatIndex;
  31.     DWORD          dwFormatTag;
  32.     DWORD          fdwSupport;
  33.     LPWAVEFORMATEX pwfx;
  34.     DWORD          cbwfx;
  35.     char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  36. } ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
  37. typedef struct {
  38.     DWORD          cbStruct;
  39.     DWORD          dwFormatIndex;
  40.     DWORD          dwFormatTag;
  41.     DWORD          fdwSupport;
  42.     LPWAVEFORMATEX pwfx;
  43.     DWORD          cbwfx;
  44.     WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  45. } ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
  46.  
  47. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/
  48. typedef struct {
  49.     DWORD cbStruct;
  50.     DWORD dwFormatTagIndex;
  51.     DWORD dwFormatTag;
  52.     DWORD cbFormatSize;
  53.     DWORD fdwSupport;
  54.     DWORD cStandardFormats;
  55.     char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  56. } ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
  57. typedef struct {
  58.     DWORD cbStruct;
  59.     DWORD dwFormatTagIndex;
  60.     DWORD dwFormatTag;
  61.     DWORD cbFormatSize;
  62.     DWORD fdwSupport;
  63.     DWORD cStandardFormats;
  64.     WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  65. } ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
  66.  
  67. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/
  68. typedef struct {
  69.     DWORD  cbStruct;
  70.     FOURCC fccType;
  71.     FOURCC fccComp;
  72.     WORD   wMid;
  73.     WORD   wPid;
  74.     DWORD  vdwACM;
  75.     DWORD  vdwDriver;
  76.     DWORD  fdwSupport;
  77.     DWORD  cFormatTags;
  78.     DWORD  cFilterTags;
  79.     HICON  hicon;
  80.     char  szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  81.     char  szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  82.     char  szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  83.     char  szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  84.     char  szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  85. } ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
  86. typedef struct {
  87.     DWORD  cbStruct;
  88.     FOURCC fccType;
  89.     FOURCC fccComp;
  90.     WORD   wMid;
  91.     WORD   wPid;
  92.     DWORD  vdwACM;
  93.     DWORD  vdwDriver;
  94.     DWORD  fdwSupport;
  95.     DWORD  cFormatTags;
  96.     DWORD  cFilterTags;
  97.     HICON  hicon;
  98.     WCHAR  szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  99.     WCHAR  szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  100.     WCHAR  szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  101.     WCHAR  szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  102.     WCHAR  szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  103. } ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
  104.  
  105. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/
  106. typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (
  107.     HACMDRIVERID        hadid,
  108.     LPACMFORMATDETAILSA pafd,
  109.     DWORD_PTR           dwInstance,
  110.     DWORD               fdwSupport
  111. );
  112. typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (
  113.     HACMDRIVERID        hadid,
  114.     LPACMFORMATDETAILSW pafd,
  115.     DWORD_PTR           dwInstance,
  116.     DWORD               fdwSupport
  117. );
  118.  
  119. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/
  120. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (
  121.     HACMDRIVERID           hadid,
  122.     LPACMFORMATTAGDETAILSA paftd,
  123.     DWORD_PTR              dwInstance,
  124.     DWORD                  fdwSupport
  125. );
  126. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (
  127.     HACMDRIVERID           hadid,
  128.     LPACMFORMATTAGDETAILSW paftd,
  129.     DWORD_PTR              dwInstance,
  130.     DWORD                  fdwSupport
  131. );
  132.  
  133. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/
  134. typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (
  135.     HACMDRIVERID hadid,
  136.     DWORD_PTR    dwInstance,
  137.     DWORD        fdwSupport
  138. );
  139.  
  140. /*and now the functions...*/
  141.  
  142. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/
  143. MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen);
  144. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/
  145. MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
  146. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/
  147. MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
  148. MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
  149. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/
  150. MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose);
  151. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/
  152. MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails);
  153. MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails);
  154. /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/
  155. MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
  156. MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
  157.  
  158. #ifdef UNICODE
  159.  
  160. typedef ACMFORMATDETAILSW ACMFORMATDETAILS, *LPACMFORMATDETAILS;
  161. typedef ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
  162. typedef ACMDRIVERDETAILSW ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
  163. typedef ACMFORMATENUMCBW ACMFORMATENUMCB;
  164. typedef ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB;
  165. #define acmFormatEnum acmFormatEnumW
  166. #define acmDriverDetails acmDriverDetailsW
  167. #define acmFormatTagEnum acmFormatTagEnumW
  168.  
  169. #else /*ifdef UNICODE*/
  170.  
  171. typedef ACMFORMATDETAILSA ACMFORMATDETAILS, *LPACMFORMATDETAILS;
  172. typedef ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
  173. typedef ACMDRIVERDETAILSA ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
  174. typedef ACMFORMATENUMCBA ACMFORMATENUMCB;
  175. typedef ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB;
  176. #define acmFormatEnum acmFormatEnumA
  177. #define acmDriverDetails acmDriverDetailsA
  178. #define acmFormatTagEnum acmFormatTagEnumA
  179.  
  180. #endif /*ifdef UNICODE*/
  181.  
  182. #ifdef __cplusplus
  183. }
  184. #endif
  185.  
  186. #endif
  187.