since you're using initialization and finalization sections, I'm assuming you're trying to use them in the console application?
I did a small UI test and it works just fine. (attached). (The path to the sound is hardcoded! you need to change it in the code!)
From the nature of the playing sounds, there's always a problem of synchronization of events. I.e. "end of sounds" can always be reported from a separate thread.
However, the test shows that "end of sounds" is reported to the main thread. That certainly involves having a running event loops.
And such loop typically doesn't exist, if you're writing a console application.