1 /***********************************************************************\ 2 * msacm.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * by Stewart Gordon * 8 * * 9 * Placed into public domain * 10 \***********************************************************************/ 11 module win32.msacm; 12 13 private import win32.basetsd, win32.mmsystem, win32.windef; 14 15 alias HANDLE HACMDRIVERID, HACMDRIVER; 16 alias HANDLE* LPHACMDRIVER; 17 18 /* Comment from MinGW 19 found through experimentation 20 */ 21 const size_t 22 ACMDRIVERDETAILS_SHORTNAME_CHARS = 32, 23 ACMDRIVERDETAILS_LONGNAME_CHARS = 128, 24 ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80, 25 ACMDRIVERDETAILS_LICENSING_CHARS = 128; 26 27 /* Comment from MinGW 28 I don't know the right values for these macros 29 */ 30 const size_t 31 ACMFORMATDETAILS_FORMAT_CHARS = 256, 32 ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 256, 33 ACMDRIVERDETAILS_FEATURES_CHARS = 256; 34 35 struct ACMFORMATDETAILSA { 36 DWORD cbStruct = ACMFORMATDETAILSA.sizeof; // are they? 37 DWORD dwFormatIndex; 38 DWORD dwFormatTag; 39 DWORD fdwSupport; 40 LPWAVEFORMATEX pwfx; 41 DWORD cbwfx; 42 char[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; 43 } 44 alias ACMFORMATDETAILSA* LPACMFORMATDETAILSA; 45 46 struct ACMFORMATDETAILSW { 47 DWORD cbStruct = ACMFORMATDETAILSW.sizeof; 48 DWORD dwFormatIndex; 49 DWORD dwFormatTag; 50 DWORD fdwSupport; 51 LPWAVEFORMATEX pwfx; 52 DWORD cbwfx; 53 WCHAR[ACMFORMATDETAILS_FORMAT_CHARS] szFormat; 54 } 55 alias ACMFORMATDETAILSW* LPACMFORMATDETAILSW; 56 57 struct ACMFORMATTAGDETAILSA { 58 DWORD cbStruct = ACMFORMATTAGDETAILSA.sizeof; 59 DWORD dwFormatTagIndex; 60 DWORD dwFormatTag; 61 DWORD cbFormatSize; 62 DWORD fdwSupport; 63 DWORD cStandardFormats; 64 char[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; 65 } 66 alias ACMFORMATTAGDETAILSA* LPACMFORMATTAGDETAILSA; 67 68 struct ACMFORMATTAGDETAILSW { 69 DWORD cbStruct = ACMFORMATTAGDETAILSW.sizeof; 70 DWORD dwFormatTagIndex; 71 DWORD dwFormatTag; 72 DWORD cbFormatSize; 73 DWORD fdwSupport; 74 DWORD cStandardFormats; 75 WCHAR[ACMFORMATTAGDETAILS_FORMATTAG_CHARS] szFormatTag; 76 } 77 alias ACMFORMATTAGDETAILSW* LPACMFORMATTAGDETAILSW; 78 79 struct ACMDRIVERDETAILSA { 80 DWORD cbStruct = ACMDRIVERDETAILSA.sizeof; 81 FOURCC fccType; 82 FOURCC fccComp; 83 WORD wMid; 84 WORD wPid; 85 DWORD vdwACM; 86 DWORD vdwDriver; 87 DWORD fdwSupport; 88 DWORD cFormatTags; 89 DWORD cFilterTags; 90 HICON hicon; 91 char[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; 92 char[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; 93 char[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; 94 char[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; 95 char[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; 96 } 97 alias ACMDRIVERDETAILSA* LPACMDRIVERDETAILSA; 98 99 struct ACMDRIVERDETAILSW { 100 DWORD cbStruct = ACMDRIVERDETAILSW.sizeof; 101 FOURCC fccType; 102 FOURCC fccComp; 103 WORD wMid; 104 WORD wPid; 105 DWORD vdwACM; 106 DWORD vdwDriver; 107 DWORD fdwSupport; 108 DWORD cFormatTags; 109 DWORD cFilterTags; 110 HICON hicon; 111 WCHAR[ACMDRIVERDETAILS_SHORTNAME_CHARS] szShortName; 112 WCHAR[ACMDRIVERDETAILS_LONGNAME_CHARS] szLongName; 113 WCHAR[ACMDRIVERDETAILS_COPYRIGHT_CHARS] szCopyright; 114 WCHAR[ACMDRIVERDETAILS_LICENSING_CHARS] szLicensing; 115 WCHAR[ACMDRIVERDETAILS_FEATURES_CHARS] szFeatures; 116 } 117 alias ACMDRIVERDETAILSW* LPACMDRIVERDETAILSW; 118 119 extern (Windows) { 120 alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSA pafd, 121 DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBA; 122 alias BOOL function(HACMDRIVERID hadid, LPACMFORMATDETAILSW pafd, 123 DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATENUMCBW; 124 alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSA paftd, 125 DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBA; 126 alias BOOL function(HACMDRIVERID hadid, LPACMFORMATTAGDETAILSW paftd, 127 DWORD_PTR dwInstance, DWORD fdwSupport) ACMFORMATTAGENUMCBW; 128 alias BOOL function(HACMDRIVERID hadid, DWORD_PTR dwInstance, 129 DWORD fdwSupport) ACMDRIVERENUMCB; 130 131 MMRESULT acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, 132 DWORD fdwOpen); 133 MMRESULT acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, 134 DWORD fdwEnum); 135 MMRESULT acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, 136 ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); 137 MMRESULT acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, 138 ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); 139 MMRESULT acmDriverClose(HACMDRIVER had, DWORD fdwClose); 140 MMRESULT acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, 141 DWORD fdwDetails); 142 MMRESULT acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, 143 DWORD fdwDetails); 144 MMRESULT acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, 145 ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); 146 MMRESULT acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, 147 ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); 148 } 149 150 version (Unicode) { 151 alias ACMFORMATDETAILSW ACMFORMATDETAILS; 152 alias ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS; 153 alias ACMDRIVERDETAILSW ACMDRIVERDETAILS; 154 alias ACMFORMATENUMCBW ACMFORMATENUMCB; 155 alias ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; 156 alias acmFormatEnumW acmFormatEnum; 157 alias acmDriverDetailsW acmDriverDetails; 158 alias acmFormatTagEnumW acmFormatTagEnum; 159 } else { 160 alias ACMFORMATDETAILSA ACMFORMATDETAILS; 161 alias ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS; 162 alias ACMDRIVERDETAILSA ACMDRIVERDETAILS; 163 alias ACMFORMATENUMCBA ACMFORMATENUMCB; 164 alias ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; 165 alias acmFormatEnumA acmFormatEnum; 166 alias acmDriverDetailsA acmDriverDetails; 167 alias acmFormatTagEnumA acmFormatTagEnum; 168 } 169 170 alias ACMFORMATDETAILS* LPACMFORMATDETAILS; 171 alias ACMFORMATTAGDETAILS* LPACMFORMATTAGDETAILS; 172 alias ACMDRIVERDETAILS* LPACMDRIVERDETAILS;