2 * Unit tests for mmio APIs
4 * Copyright 2005 Dmitry Timoshkov
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
29 #include "wine/test.h"
31 static DWORD RIFF_buf
[] =
33 FOURCC_RIFF
, 7*sizeof(DWORD
)+sizeof(MainAVIHeader
), mmioFOURCC('A','V','I',' '),
34 FOURCC_LIST
, sizeof(DWORD
)+sizeof(MMCKINFO
)+sizeof(MainAVIHeader
), listtypeAVIHEADER
,
35 ckidAVIMAINHDR
, sizeof(MainAVIHeader
), 0xdeadbeef, 0xdeadbeef,
36 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
38 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
42 static void test_mmioDescend(char *fname
)
47 MMCKINFO ckRiff
, ckList
, ck
;
49 memset(&mmio
, 0, sizeof(mmio
));
50 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
51 mmio
.cchBuffer
= sizeof(RIFF_buf
);
52 mmio
.pchBuffer
= (char *)RIFF_buf
;
53 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
56 trace("%s file is missing, skipping the test\n", fname
);
59 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
61 /* first normal RIFF AVI parsing */
62 ret
= mmioDescend(hmmio
, &ckRiff
, NULL
, 0);
63 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
64 ok(ckRiff
.ckid
== FOURCC_RIFF
, "wrong ckid: %04x\n", ckRiff
.ckid
);
65 ok(ckRiff
.fccType
== formtypeAVI
, "wrong fccType: %04x\n", ckRiff
.fccType
);
66 trace("ckid %4.4s cksize %04x fccType %4.4s off %04x flags %04x\n",
67 (LPCSTR
)&ckRiff
.ckid
, ckRiff
.cksize
, (LPCSTR
)&ckRiff
.fccType
,
68 ckRiff
.dwDataOffset
, ckRiff
.dwFlags
);
70 ret
= mmioDescend(hmmio
, &ckList
, &ckRiff
, 0);
71 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
72 ok(ckList
.ckid
== FOURCC_LIST
, "wrong ckid: %04x\n", ckList
.ckid
);
73 ok(ckList
.fccType
== listtypeAVIHEADER
, "wrong fccType: %04x\n", ckList
.fccType
);
74 trace("ckid %4.4s cksize %04x fccType %4.4s off %04x flags %04x\n",
75 (LPCSTR
)&ckList
.ckid
, ckList
.cksize
, (LPCSTR
)&ckList
.fccType
,
76 ckList
.dwDataOffset
, ckList
.dwFlags
);
78 ret
= mmioDescend(hmmio
, &ck
, &ckList
, 0);
79 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
80 ok(ck
.ckid
== ckidAVIMAINHDR
, "wrong ckid: %04x\n", ck
.ckid
);
81 ok(ck
.fccType
== 0, "wrong fccType: %04x\n", ck
.fccType
);
82 trace("ckid %4.4s cksize %04x fccType %4.4s off %04x flags %04x\n",
83 (LPCSTR
)&ck
.ckid
, ck
.cksize
, (LPCSTR
)&ck
.fccType
,
84 ck
.dwDataOffset
, ck
.dwFlags
);
86 /* test various mmioDescend flags */
88 mmioSeek(hmmio
, 0, SEEK_SET
);
89 memset(&ck
, 0x66, sizeof(ck
));
90 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDRIFF
);
91 ok(ret
== MMIOERR_CHUNKNOTFOUND
||
92 ret
== MMIOERR_INVALIDFILE
, "mmioDescend returned %u\n", ret
);
94 mmioSeek(hmmio
, 0, SEEK_SET
);
95 memset(&ck
, 0x66, sizeof(ck
));
97 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDRIFF
);
98 ok(ret
== MMIOERR_CHUNKNOTFOUND
||
99 ret
== MMIOERR_INVALIDFILE
, "mmioDescend returned %u\n", ret
);
101 mmioSeek(hmmio
, 0, SEEK_SET
);
102 memset(&ck
, 0x66, sizeof(ck
));
104 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDRIFF
);
105 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
106 ok(ck
.ckid
== FOURCC_RIFF
, "wrong ckid: %04x\n", ck
.ckid
);
107 ok(ck
.fccType
== formtypeAVI
, "wrong fccType: %04x\n", ck
.fccType
);
109 mmioSeek(hmmio
, 0, SEEK_SET
);
110 memset(&ck
, 0x66, sizeof(ck
));
111 ret
= mmioDescend(hmmio
, &ck
, NULL
, 0);
112 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
113 ok(ck
.ckid
== FOURCC_RIFF
, "wrong ckid: %04x\n", ck
.ckid
);
114 ok(ck
.fccType
== formtypeAVI
, "wrong fccType: %04x\n", ck
.fccType
);
116 /* do NOT seek, use current file position */
117 memset(&ck
, 0x66, sizeof(ck
));
119 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDLIST
);
120 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
121 ok(ck
.ckid
== FOURCC_LIST
, "wrong ckid: %04x\n", ck
.ckid
);
122 ok(ck
.fccType
== listtypeAVIHEADER
, "wrong fccType: %04x\n", ck
.fccType
);
124 mmioSeek(hmmio
, 0, SEEK_SET
);
125 memset(&ck
, 0x66, sizeof(ck
));
127 ck
.fccType
= listtypeAVIHEADER
;
128 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDCHUNK
);
129 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
130 ok(ck
.ckid
== FOURCC_RIFF
, "wrong ckid: %04x\n", ck
.ckid
);
131 ok(ck
.fccType
== formtypeAVI
, "wrong fccType: %04x\n", ck
.fccType
);
133 /* do NOT seek, use current file position */
134 memset(&ck
, 0x66, sizeof(ck
));
135 ck
.ckid
= FOURCC_LIST
;
136 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDCHUNK
);
137 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
138 ok(ck
.ckid
== FOURCC_LIST
, "wrong ckid: %04x\n", ck
.ckid
);
139 ok(ck
.fccType
== listtypeAVIHEADER
, "wrong fccType: %04x\n", ck
.fccType
);
141 mmioSeek(hmmio
, 0, SEEK_SET
);
142 memset(&ck
, 0x66, sizeof(ck
));
143 ck
.ckid
= FOURCC_RIFF
;
144 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDCHUNK
);
145 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
146 ok(ck
.ckid
== FOURCC_RIFF
, "wrong ckid: %04x\n", ck
.ckid
);
147 ok(ck
.fccType
== formtypeAVI
, "wrong fccType: %04x\n", ck
.fccType
);
149 /* do NOT seek, use current file position */
150 memset(&ckList
, 0x66, sizeof(ckList
));
152 ret
= mmioDescend(hmmio
, &ckList
, &ck
, MMIO_FINDCHUNK
);
153 ok(ret
== MMSYSERR_NOERROR
, "mmioDescend error %u\n", ret
);
154 ok(ckList
.ckid
== FOURCC_LIST
, "wrong ckid: %04x\n", ckList
.ckid
);
155 ok(ckList
.fccType
== listtypeAVIHEADER
, "wrong fccType: %04x\n", ckList
.fccType
);
157 mmioSeek(hmmio
, 0, SEEK_SET
);
158 memset(&ck
, 0x66, sizeof(ck
));
159 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDCHUNK
);
160 ok(ret
== MMIOERR_CHUNKNOTFOUND
||
161 ret
== MMIOERR_INVALIDFILE
, "mmioDescend returned %u\n", ret
);
162 ok(ck
.ckid
!= 0x66666666, "wrong ckid: %04x\n", ck
.ckid
);
163 ok(ck
.fccType
!= 0x66666666, "wrong fccType: %04x\n", ck
.fccType
);
164 ok(ck
.dwDataOffset
!= 0x66666666, "wrong dwDataOffset: %04x\n", ck
.dwDataOffset
);
166 mmioSeek(hmmio
, 0, SEEK_SET
);
167 memset(&ck
, 0x66, sizeof(ck
));
168 ret
= mmioDescend(hmmio
, &ck
, NULL
, MMIO_FINDRIFF
);
169 ok(ret
== MMIOERR_CHUNKNOTFOUND
||
170 ret
== MMIOERR_INVALIDFILE
, "mmioDescend returned %u\n", ret
);
175 static void test_mmioOpen(char *fname
)
182 memset(&mmio
, 0, sizeof(mmio
));
183 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
184 mmio
.cchBuffer
= sizeof(buf
);
185 mmio
.pchBuffer
= buf
;
186 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
189 trace("%s file is missing, skipping the test\n", fname
);
192 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
194 memset(&mmio
, 0, sizeof(mmio
));
195 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
196 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
197 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
198 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
199 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
200 ok(mmio
.cchBuffer
== sizeof(buf
), "got %u\n", mmio
.cchBuffer
);
201 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
205 memset(&mmio
, 0, sizeof(mmio
));
206 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
208 mmio
.pchBuffer
= buf
;
209 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
210 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
212 memset(&mmio
, 0, sizeof(mmio
));
213 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
214 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
215 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
216 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
217 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
218 ok(mmio
.cchBuffer
== 0, "expected 0, got %u\n", mmio
.cchBuffer
);
219 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
223 memset(&mmio
, 0, sizeof(mmio
));
224 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
226 mmio
.pchBuffer
= NULL
;
227 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
228 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
230 memset(&mmio
, 0, sizeof(mmio
));
231 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
232 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
233 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
234 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
235 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
236 ok(mmio
.cchBuffer
== 0, "expected 0, got %u\n", mmio
.cchBuffer
);
237 ok(mmio
.pchBuffer
== NULL
, "expected NULL\n");
241 memset(&mmio
, 0, sizeof(mmio
));
242 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
243 mmio
.cchBuffer
= 256;
244 mmio
.pchBuffer
= NULL
;
245 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
246 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
248 memset(&mmio
, 0, sizeof(mmio
));
249 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
250 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
251 ok(mmio
.dwFlags
== (MMIO_READ
|MMIO_ALLOCBUF
), "expected MMIO_READ|MMIO_ALLOCBUF, got %x\n", mmio
.dwFlags
);
252 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
253 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
254 ok(mmio
.cchBuffer
== 256, "expected 256, got %u\n", mmio
.cchBuffer
);
255 ok(mmio
.pchBuffer
!= NULL
, "expected not NULL\n");
259 memset(&mmio
, 0, sizeof(mmio
));
260 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
261 mmio
.cchBuffer
= sizeof(buf
);
262 mmio
.pchBuffer
= buf
;
263 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
| MMIO_ALLOCBUF
);
264 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
266 memset(&mmio
, 0, sizeof(mmio
));
267 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
268 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
269 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
270 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
271 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
272 ok(mmio
.cchBuffer
== sizeof(buf
), "got %u\n", mmio
.cchBuffer
);
273 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
277 memset(&mmio
, 0, sizeof(mmio
));
278 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
280 mmio
.pchBuffer
= buf
;
281 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
| MMIO_ALLOCBUF
);
282 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
284 memset(&mmio
, 0, sizeof(mmio
));
285 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
286 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
287 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
288 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
289 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
290 ok(mmio
.cchBuffer
== MMIO_DEFAULTBUFFER
, "expected MMIO_DEFAULTBUFFER, got %u\n", mmio
.cchBuffer
);
291 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
295 memset(&mmio
, 0, sizeof(mmio
));
296 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
298 mmio
.pchBuffer
= NULL
;
299 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
| MMIO_ALLOCBUF
);
300 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
302 memset(&mmio
, 0, sizeof(mmio
));
303 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
304 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
305 ok(mmio
.dwFlags
== (MMIO_READ
|MMIO_ALLOCBUF
), "expected MMIO_READ|MMIO_ALLOCBUF, got %x\n", mmio
.dwFlags
);
306 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
307 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
308 ok(mmio
.cchBuffer
== MMIO_DEFAULTBUFFER
, "expected MMIO_DEFAULTBUFFER, got %u\n", mmio
.cchBuffer
);
309 ok(mmio
.pchBuffer
!= NULL
, "expected not NULL\n");
313 memset(&mmio
, 0, sizeof(mmio
));
314 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
315 mmio
.cchBuffer
= 256;
316 mmio
.pchBuffer
= NULL
;
317 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
| MMIO_ALLOCBUF
);
318 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
320 memset(&mmio
, 0, sizeof(mmio
));
321 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
322 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
323 ok(mmio
.dwFlags
== (MMIO_READ
|MMIO_ALLOCBUF
), "expected MMIO_READ|MMIO_ALLOCBUF, got %x\n", mmio
.dwFlags
);
324 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
325 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
326 ok(mmio
.cchBuffer
== 256, "expected 256, got %u\n", mmio
.cchBuffer
);
327 ok(mmio
.pchBuffer
!= NULL
, "expected not NULL\n");
332 static void test_mmioSetBuffer(char *fname
)
339 memset(&mmio
, 0, sizeof(mmio
));
340 mmio
.fccIOProc
= fname
? FOURCC_DOS
: FOURCC_MEM
;
341 mmio
.cchBuffer
= sizeof(buf
);
342 mmio
.pchBuffer
= buf
;
343 hmmio
= mmioOpen(fname
, &mmio
, MMIO_READ
);
346 trace("%s file is missing, skipping the test\n", fname
);
349 ok(hmmio
!= 0, "mmioOpen error %u\n", mmio
.wErrorRet
);
351 memset(&mmio
, 0, sizeof(mmio
));
352 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
353 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
354 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
355 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
356 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
357 ok(mmio
.cchBuffer
== sizeof(buf
), "got %u\n", mmio
.cchBuffer
);
358 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
360 ret
= mmioSetBuffer(hmmio
, NULL
, 0, 0);
361 ok(ret
== MMSYSERR_NOERROR
, "mmioSetBuffer error %u\n", ret
);
363 memset(&mmio
, 0, sizeof(mmio
));
364 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
365 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
366 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
367 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
368 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
369 ok(mmio
.cchBuffer
== 0, "got not 0\n");
370 ok(mmio
.pchBuffer
== NULL
, "got not NULL buf\n");
372 ret
= mmioSetBuffer(hmmio
, NULL
, 0, MMIO_ALLOCBUF
);
373 ok(ret
== MMSYSERR_NOERROR
, "mmioSetBuffer error %u\n", ret
);
375 memset(&mmio
, 0, sizeof(mmio
));
376 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
377 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
378 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
379 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
380 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
381 ok(mmio
.cchBuffer
== 0, "got not 0\n");
382 ok(mmio
.pchBuffer
== NULL
, "got not NULL buf\n");
384 ret
= mmioSetBuffer(hmmio
, buf
, 0, MMIO_ALLOCBUF
);
385 ok(ret
== MMSYSERR_NOERROR
, "mmioSetBuffer error %u\n", ret
);
387 memset(&mmio
, 0, sizeof(mmio
));
388 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
389 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
390 ok(mmio
.dwFlags
== MMIO_READ
, "expected MMIO_READ, got %x\n", mmio
.dwFlags
);
391 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
392 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
393 ok(mmio
.cchBuffer
== 0, "got not 0\n");
394 ok(mmio
.pchBuffer
== buf
, "expected %p, got %p\n", buf
, mmio
.pchBuffer
);
396 ret
= mmioSetBuffer(hmmio
, NULL
, 256, MMIO_WRITE
|MMIO_ALLOCBUF
);
397 ok(ret
== MMSYSERR_NOERROR
, "mmioSetBuffer error %u\n", ret
);
399 memset(&mmio
, 0, sizeof(mmio
));
400 ret
= mmioGetInfo(hmmio
, &mmio
, 0);
401 ok(ret
== MMSYSERR_NOERROR
, "mmioGetInfo error %u\n", ret
);
402 ok(mmio
.dwFlags
== (MMIO_READ
|MMIO_ALLOCBUF
), "expected MMIO_READ|MMIO_ALLOCBUF, got %x\n", mmio
.dwFlags
);
403 ok(mmio
.wErrorRet
== MMSYSERR_NOERROR
, "expected MMSYSERR_NOERROR, got %u\n", mmio
.wErrorRet
);
404 ok(mmio
.fccIOProc
== (fname
? FOURCC_DOS
: FOURCC_MEM
), "got %4.4s\n", (LPCSTR
)&mmio
.fccIOProc
);
405 ok(mmio
.cchBuffer
== 256, "got %u\n", mmio
.cchBuffer
);
406 ok(mmio
.pchBuffer
!= NULL
, "expected not NULL\n");
407 ok(mmio
.pchBuffer
!= buf
, "expected != buf\n");
414 char fname
[] = "msrle.avi";
416 test_mmioDescend(NULL
);
417 test_mmioDescend(fname
);
419 test_mmioOpen(fname
);
420 test_mmioSetBuffer(NULL
);
421 test_mmioSetBuffer(fname
);