implement WaveThreadSetData Modified: trunk/reactos/lib/mmdrv/wave.c _____
Modified: trunk/reactos/lib/mmdrv/wave.c --- trunk/reactos/lib/mmdrv/wave.c 2005-11-21 20:46:55 UTC (rev 19421) +++ trunk/reactos/lib/mmdrv/wave.c 2005-11-21 20:56:50 UTC (rev 19422) @@ -102,7 +102,33 @@
break;
case WaveThreadSetData: - DPRINT("UNIMPLMENENT WaveThreadGetData "); + { + OVERLAPPED Overlap; + DWORD BytesReturned; + memset((PVOID)&Overlap, 0, sizeof(Overlap)); + Overlap.hEvent = pClient->Event; + + if (!DeviceIoControl(pClient->hDev, pClient->AuxParam.GetSetData.Function, + pClient->AuxParam.GetSetData.pData, pClient->AuxParam.GetSetData.DataLen, + NULL, 0, &BytesReturned, &Overlap)) + { + DWORD cbTransfer; + if (GetLastError() == ERROR_IO_PENDING) + { + if (!GetOverlappedResult(pClient->hDev, &Overlap, &cbTransfer, TRUE)) + pClient->AuxReturnCode = TranslateStatus(); + } + else + pClient->AuxReturnCode = TranslateStatus(); + + } + else + { + while (SleepEx(0, TRUE) == WAIT_IO_COMPLETION) {} + + pClient->AuxReturnCode = MMSYSERR_NOERROR; + } + } break;
case WaveThreadBreakLoop: