|
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 |