waveOutSetVolume (coredll)
Last changed: -212.189.46.155

.
Summary
This function sets the output audio volume of the pocket pc device.

C# Signature:

[DllImport("coredll.dll", SetLastError=true)]
protected static extern int waveOutSetVolume(IntPtr device, uint volume);

VB Signature:

Declare Function waveOutSetVolume Lib "coredll.dll" (ByVal device As IntPtr, ByVal volume As Integer) As Integer

User-Defined Types:

None.

Notes:

values for 'volume' are between value between 0 (off) and 65536 (max)

if there is only one audio device, you can set 'device' to null (or IntPtr.Zero)

Tips & Tricks:

Please add some!

Sample Code:

  // The volume to pass in (0xffff or 65535 equals max volume)
  uint newVolume = (uint)0xffff;

  // Set this value in the left and right channels
  uint NewVolumeAllChannels = ((( uint )newVolume & 0x0000ffff) | (( uint )newVolume << 16));

  // Call func to set volume.
  waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);

RichardW
Fixed the example code. It didn't work because the range of volume values are 0 to 65535 and the value passed in the example was 65536, which is set the right volume to 1 (out of 65535) and the left volume to 0.

But I create this example below.

  public enum Volumes : int {
    OFF = 0,
    LOW = 858993459,
    NORMAL = 1717986918,
    MEDIUM = -1717986919,
    HIGH = -858993460,
    VERY_HIGH = -1
}

[DllImport("coredll.dll", SetLastError=true)]
internal static extern int waveOutSetVolume(IntPtr device, int volume);

[DllImport("coredll.dll", SetLastError=true)]
internal static extern int waveOutGetVolume(IntPtr device, ref int volume);

public static Volumes Volume {
    get {
    int v = (int)0;
    waveOutGetVolume(IntPtr.Zero, ref v);
    switch (v) {
        case (int)Volumes.OFF: return Volumes.OFF;
        case (int)Volumes.LOW: return Volumes.LOW;
        case (int)Volumes.NORMAL: return Volumes.NORMAL;
        case (int)Volumes.MEDIUM: return Volumes.MEDIUM;
        case (int)Volumes.HIGH: return Volumes.HIGH;
        case (int)Volumes.VERY_HIGH: return Volumes.VERY_HIGH;
        default: return Volumes.OFF;
    }
     }
     set { waveOutSetVolume(IntPtr.Zero, (int)value); }
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation