PowerReadFriendlyName (powrprof)
Last changed: -14.97.250.110

.
Summary
Retreives friendly name for power scheme with given GUID

C# Signature:

     [DllImport("powrprof.dll")]
    public static extern UInt32 PowerReadFriendlyName(
        IntPtr RootPowerKey,
        IntPtr SchemeGuid,
        IntPtr SubGroupOfPowerSettingGuid,
        IntPtr PowerSettingGuid,
        IntPtr Buffer,
        ref UInt32 BufferSize);

    [DllImport("powrprof.dll")]
    public static extern UInt32 PowerReadFriendlyName(
        IntPtr RootPowerKey,
        ref Guid SchemeGuid,
        IntPtr SubGroupOfPowerSettingGuid,
        IntPtr PowerSettingGuid,
        IntPtr Buffer,
        ref UInt32 BufferSize);

VB Signature:

Declare Function PowerReadFriendlyName Lib "powrprof.dll" (TODO) As TODO

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    private string GetCurrentPowerSchemeVistaAPI()
    {
        IntPtr ptrActiveGuid = IntPtr.Zero;
        uint res = PowerGetActiveScheme(IntPtr.Zero, ref ptrActiveGuid);
        if (res == 0)
        {
        uint buffSize = 0;
        res = PowerReadFriendlyName(IntPtr.Zero, ptrActiveGuid, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, ref buffSize);
        if (res == 0)
        {
            if (buffSize == 0u) return "";
            IntPtr ptrName = Marshal.AllocHGlobal((int)buffSize);
            res = PowerReadFriendlyName(IntPtr.Zero, ptrActiveGuid, IntPtr.Zero, IntPtr.Zero, ptrName, ref buffSize);
            if (res == 0)
            {
            string ret = Marshal.PtrToStringUni(ptrName);
            Marshal.FreeHGlobal(ptrName);
            return ret;
            }
            Marshal.FreeHGlobal(ptrName);
        }
        }
        throw new Exception("Error reading current power scheme. Native Win32 error code = " + res);
    }

Documentation