256{
259 HMMIO hmmio = 0;
267
269
271
272
274 static const WCHAR wszWave[] = {
'W',
'A',
'V',
'E',0};
275 HRSRC hRes;
277
280 goto errCleanUp;
283 goto errCleanUp;
284 }
286 } else
288
289
291 {
293
294 memset(&mminfo, 0,
sizeof(mminfo));
300 }
302 {
304 {
305 static const WCHAR wszSystemAsterisk[] = {
'S',
'y',
's',
't',
'e',
'm',
'A',
's',
't',
'e',
'r',
'i',
's',
'k',0};
306 static const WCHAR wszSystemDefault[] = {
'S',
'y',
's',
't',
'e',
'm',
'D',
'e',
'f',
'a',
'u',
'l',
't',0};
307 static const WCHAR wszSystemExclamation[] = {
'S',
'y',
's',
't',
'e',
'm',
'E',
'x',
'c',
'l',
'a',
'm',
'a',
't',
'i',
'o',
'n',0};
308 static const WCHAR wszSystemExit[] = {
'S',
'y',
's',
't',
'e',
'm',
'E',
'x',
'i',
't',0};
309 static const WCHAR wszSystemHand[] = {
'S',
'y',
's',
't',
'e',
'm',
'H',
'a',
'n',
'd',0};
310 static const WCHAR wszSystemQuestion[] = {
'S',
'y',
's',
't',
'e',
'm',
'Q',
'u',
'e',
's',
't',
'i',
'o',
'n',0};
311 static const WCHAR wszSystemStart[] = {
'S',
'y',
's',
't',
'e',
'm',
'S',
't',
'a',
'r',
't',0};
312 static const WCHAR wszSystemWelcome[] = {
'S',
'y',
's',
't',
'e',
'm',
'W',
'e',
'l',
'c',
'o',
'm',
'e',0};
313
320 wps->
pszSound = wszSystemExclamation;
331 else goto errCleanUp;
332 }
334 }
336 {
338 }
339 else
340 {
342 {
344 {
346 }
347 }
348 }
349 if (hmmio == 0) goto errCleanUp;
350
352 goto errCleanUp;
353
354 TRACE(
"ParentChunk ckid=%.4s fccType=%.4s cksize=%08X\n",
356
359 goto errCleanUp;
360
363 goto errCleanUp;
364
365 TRACE(
"Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n",
367
370 goto errCleanUp;
371
372 TRACE(
"wFormatTag=%04X !\n", lpWaveFormat->wFormatTag);
373 TRACE(
"nChannels=%d\n", lpWaveFormat->nChannels);
374 TRACE(
"nSamplesPerSec=%d\n", lpWaveFormat->nSamplesPerSec);
375 TRACE(
"nAvgBytesPerSec=%d\n", lpWaveFormat->nAvgBytesPerSec);
376 TRACE(
"nBlockAlign=%d\n", lpWaveFormat->nBlockAlign);
377 TRACE(
"wBitsPerSample=%u !\n", lpWaveFormat->wBitsPerSample);
378
379
381
384 goto errCleanUp;
385
386 TRACE(
"Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n",
388
390
393 goto errCleanUp;
394
395
396 bufsize = (((lpWaveFormat->nAvgBytesPerSec / 3) - 1) / lpWaveFormat->nBlockAlign + 1) *
397 lpWaveFormat->nBlockAlign;
407 goto errCleanUp;
408 }
409
412
413 do {
415
418 {
420 {
422 break;
423 }
425 if (
count < 1)
break;
432 }
433 else FIXME(
"Couldn't play header\n");
434 }
436 }
while (wps->
bLoop);
437
440
443
444errCleanUp:
451
453
454 return bRet;
455}
BOOL WINAPI FreeResource(HGLOBAL handle)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO lpck, UINT uFlags)
LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, INT iOrigin)
MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT uFlags)
MMRESULT WINAPI mmioDescend(HMMIO hmmio, LPMMCKINFO lpck, const MMCKINFO *lpckParent, UINT uFlags)
LONG WINAPI mmioRead(HMMIO hmmio, HPSTR pch, LONG cch)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLsizei bufsize
#define WAVERR_STILLPLAYING
struct wavehdr_tag WAVEHDR
#define SND_ALIAS_SYSTEMEXCLAMATION
#define SND_ALIAS_SYSTEMSTART
#define SND_ALIAS_SYSTEMDEFAULT
#define SND_ALIAS_SYSTEMHAND
#define SND_ALIAS_SYSTEMEXIT
#define SND_ALIAS_SYSTEMWELCOME
#define mmioFOURCC(c0, c1, c2, c3)
#define SND_ALIAS_SYSTEMQUESTION
#define CALLBACK_FUNCTION
#define SND_ALIAS_SYSTEMASTERISK
static void CALLBACK PlaySound_Callback(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static HMMIO get_mmioFromFile(LPCWSTR lpszName)
static void PlaySound_WaitDone(struct playsound_data *s)
static HMMIO get_mmioFromProfile(UINT uFlags, LPCWSTR lpszName)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
UINT WINAPI waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, WAVEHDR *lpWaveOutHdr, UINT uSize)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)