Refactored winmm backend
Refactored winmm backend

Using CALLBACK_FUNCTION again, but protect with semaphore to avoid closing
the device while there are still buffers to be played.

cedrozor/FreeRDP,akallabeth/FreeRDP,RangeeGmbH/FreeRDP,akallabeth/FreeRDP,FreeRDP/FreeRDP,Devolutions/FreeRDP,awakecoding/FreeRDP,DavBfr/FreeRDP,akallabeth/FreeRDP,cloudbase/FreeRDP-dev,mfleisz/FreeRDP,FreeRDP/FreeRDP,DavBfr/FreeRDP,akallabeth/FreeRDP,DavBfr/FreeRDP,awakecoding/FreeRDP,ivan-83/FreeRDP,Devolutions/FreeRDP,akallabeth/FreeRDP,DavBfr/FreeRDP,DavBfr/FreeRDP,chipitsine/FreeRDP,akallabeth/FreeRDP,ivan-83/FreeRDP,cloudbase/FreeRDP-dev,mfleisz/FreeRDP,ivan-83/FreeRDP,FreeRDP/FreeRDP,mfleisz/FreeRDP,Devolutions/FreeRDP,Devolutions/FreeRDP,cloudbase/FreeRDP-dev,cedrozor/FreeRDP,chipitsine/FreeRDP,cedrozor/FreeRDP,Devolutions/FreeRDP,ivan-83/FreeRDP,mfleisz/FreeRDP,awakecoding/FreeRDP,DavBfr/FreeRDP,ivan-83/FreeRDP,chipitsine/FreeRDP,akallabeth/FreeRDP,RangeeGmbH/FreeRDP,Devolutions/FreeRDP,chipitsine/FreeRDP,RangeeGmbH/FreeRDP,mfleisz/FreeRDP,erbth/FreeRDP,erbth/FreeRDP,cedrozor/FreeRDP,FreeRDP/FreeRDP,Devolutions/FreeRDP,cloudbase/FreeRDP-dev,FreeRDP/FreeRDP,mfleisz/FreeRDP,mfleisz/FreeRDP,chipitsine/FreeRDP,erbth/FreeRDP,erbth/FreeRDP,awakecoding/FreeRDP,FreeRDP/FreeRDP,cedrozor/FreeRDP,erbth/FreeRDP,awakecoding/FreeRDP,DavBfr/FreeRDP,RangeeGmbH/FreeRDP,akallabeth/FreeRDP,ivan-83/FreeRDP,awakecoding/FreeRDP,FreeRDP/FreeRDP,ivan-83/FreeRDP,chipitsine/FreeRDP,RangeeGmbH/FreeRDP,erbth/FreeRDP,cloudbase/FreeRDP-dev,RangeeGmbH/FreeRDP,erbth/FreeRDP,RangeeGmbH/FreeRDP,awakecoding/FreeRDP,DavBfr/FreeRDP,mfleisz/FreeRDP,cedrozor/FreeRDP,Devolutions/FreeRDP,ivan-83/FreeRDP,FreeRDP/FreeRDP,RangeeGmbH/FreeRDP,cloudbase/FreeRDP-dev,erbth/FreeRDP,cedrozor/FreeRDP,cloudbase/FreeRDP-dev,chipitsine/FreeRDP,cedrozor/FreeRDP,chipitsine/FreeRDP,awakecoding/FreeRDP