What language are you using?
With DarkBASIC the following would work:
load sound "sound1.wav", 1
load sound "sound2.wav", 2
set sound volume 1, 50 // Value given in percentages of dB, so it is a logarithmic scale
set sound volume 2, 100
play sound 1
play sound 2
print "Press any key to quit"
wait key
end
With pure API calls / the standard windows header files (C / C++) I'm not sure, but I'd throw a guess that what you want to do is create two audio buffers and then set their individual volumes (of the buffers that is), if there is support for that. That's basically how it works with the DirectX audio library.
A simple, although not very practical approach is to just step through all the wave data manually and multiply it by a set factor (if you attempt to increase the volume rather than decrease it in this way you'll want to watch out so that you don't overflow the maximum sample amplitude).
Some pseudo code in C-style language:
for(int s = 0; s < sampleCount; s++) {
if((audio[s] * amplitudeFactor) <= MAX_SAMPLE_AMPLITUDE) {
audio[s] = int((amplitudeFactor * audio[s]) + 0.50) // Round it properly
} else {
// Sample amplitude overflow. Handle it however you see fit.
}
}
Hope that can be of some help

Note that the last approach will change the volume of the wave data definitively, while the previous approaches most likely uses the same method only when transmitting the audio data to the sound card for playback (and thus won't affect the source audio data).