This is going to be tricky....
A DLL implies Windows, and precise timing is impossible in "user mode". With a multitasking OS, you have to get into "kernel mode" to get full control of the processor. Kernel mode and driver programming is still beyond my abilities, so I can't help with how to do it, other than that it's advanced stuff, and you have to use the DDK (Driver Development Kit).
[EDIT]
Actually, it would be a bad idea to do this in software with a multitasking OS. The right way is to do it in hardware. for example, sound cards have their own clock, and they have (at least) three modes.
Wave files work somewhat like your approach, except that the samples are buffered and sent to the sound card in quick-bursts... not at the rate they are reproduced. Even with the built-in buffering, you can get clitches & dropouts when playing a wave file and heavy multitasking.
The 2nd mode is MIDI, where the waveform is stored the soundcard's RAM, and the program just sends it a "Play-it" command.
The 3rd mode is direct audio from the CD player. The CD drive has it's own DAC, and sends audio directly to the sound card, bypassing the computer's data bus.