我觉得这是这API的缺陷所致,MSDN已经说的很清楚了。一定要Pause才能设置的。
The buffer must be prepared with the waveOutPrepareHeader function before it is passed to waveOutWrite. Unless the device is paused by calling the waveOutPause function, playback begins when the first data block is sent to the device.
楼主为啥不用MCI呢?MCI控制和执行都要方便许多呢。