waveOutGetVolume (coredll)
Last changed: -201.25.21.120

.
Summary
Returns the current system volume

C# Signature:

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

VB Signature:

Declare Function waveOutGetVolume Lib "coredll.dll" (ByVal uDeviceID As Integer, ByRef lpdwVolume As Integer) As Integer

User-Defined Types:

None.

Notes:

0 is off, 65536 is max volume.

Pass IntPtr.Zero as the value for device if only one audio device in your pocket pc.

Tips & Tricks:

Please add some!

Sample Code:

uint ret = (uint)0;

waveOutGetVolume(IntPtr.Zero, ref ret);

This example above don't work for me.

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