Exemple #1
0
        internal static PowerManagementNativeMethods.SystemBatteryState GetSystemBatteryState()
        {
            IntPtr status = IntPtr.Zero;

            PowerManagementNativeMethods.SystemBatteryState batt_status;

            try
            {
                status = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemBatteryState)));
                uint retval = PowerManagementNativeMethods.CallNtPowerInformation(
                    5, // SystemBatteryState
                    (IntPtr)null,
                    0,
                    status,
                    (UInt32)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemBatteryState))
                    );

                if (retval == CoreNativeMethods.STATUS_ACCESS_DENIED)
                {
                    throw new UnauthorizedAccessException("The caller had insufficient access rights to get the system battery state.");
                }

                batt_status = (PowerManagementNativeMethods.SystemBatteryState)Marshal.PtrToStructure(status, typeof(PowerManagementNativeMethods.SystemBatteryState));
            }
            finally
            {
                Marshal.FreeCoTaskMem(status);
            }

            return(batt_status);
        }
Exemple #2
0
        GetSystemPowerCapabilities()
        {
            IntPtr status = IntPtr.Zero;

            PowerManagementNativeMethods.SystemPowerCapabilities powerCap;

            try
            {
                status = Marshal.AllocCoTaskMem(
                    Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemPowerCapabilities)));

                uint retval = PowerManagementNativeMethods.CallNtPowerInformation(
                    4, // SystemPowerCapabilities
                    (IntPtr)null,
                    0,
                    status,
                    (UInt32)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemPowerCapabilities))
                    );

                if (retval == CoreNativeMethods.STATUS_ACCESS_DENIED)
                {
                    throw new UnauthorizedAccessException("The caller had insufficient access rights to get the system power capabilities.");
                }

                powerCap = (PowerManagementNativeMethods.SystemPowerCapabilities)Marshal.PtrToStructure(status, typeof(PowerManagementNativeMethods.SystemPowerCapabilities));
            }
            finally
            {
                Marshal.FreeCoTaskMem(status);
            }

            return(powerCap);
        }
Exemple #3
0
        /// <summary>Registers the application to receive power setting notifications for the specific power setting event.</summary>
        /// <param name="handle">Handle indicating where the power setting notifications are to be sent.</param>
        /// <param name="powerSetting">The GUID of the power setting for which notifications are to be sent.</param>
        /// <returns>Returns a notification handle for unregistering power notifications.</returns>
        internal static int RegisterPowerSettingNotification(IntPtr handle, Guid powerSetting)
        {
            var outHandle = PowerManagementNativeMethods.RegisterPowerSettingNotification(
                handle,
                ref powerSetting,
                0);

            return(outHandle);
        }
Exemple #4
0
        /// <summary>
        /// Allows an application to inform the system that it
        /// is in use, thereby preventing the system from entering
        /// the sleeping power state or turning off the display
        /// while the application is running.
        /// </summary>
        /// <param name="executionStateOptions">The thread's execution requirements.</param>
        /// <exception cref="Win32Exception">Thrown if the SetThreadExecutionState call fails.</exception>
        public static void SetThreadExecutionState(ExecutionStates executionStateOptions)
        {
            ExecutionStates ret = PowerManagementNativeMethods.SetThreadExecutionState(executionStateOptions);

            if (ret == ExecutionStates.None)
            {
                throw new Win32Exception(LocalizedMessages.PowerExecutionStateFailed);
            }
        }
Exemple #5
0
        /// <summary>
        /// Allows an application to inform the system that it
        /// is in use, thereby preventing the system from entering
        /// the sleeping power state or turning off the display
        /// while the application is running.
        /// </summary>
        /// <param name="flags">The thread's execution requirements.</param>
        /// <exception cref="Win32Exception">Thrown if the SetThreadExecutionState call fails.</exception>
        internal static void SetThreadExecutionState(ExecutionState flags)
        {
            ExecutionState?ret = PowerManagementNativeMethods.SetThreadExecutionState(flags);

            if (ret == null)
            {
                throw new Win32Exception("SetThreadExecutionState call failed.");
            }
        }
        internal static PowerManagementNativeMethods.SystemBatteryState GetSystemBatteryState()
        {
            if (PowerManagementNativeMethods.CallNtPowerInformation(
                    PowerManagementNativeMethods.PowerInformationLevel.SystemBatteryState,
                    IntPtr.Zero, 0, out PowerManagementNativeMethods.SystemBatteryState batteryState,
                    (uint)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemBatteryState))
                    ) == NativeAPI.Consts.Common.StatusAccessDenied)
            {
                throw new UnauthorizedAccessException(LocalizedMessages.PowerInsufficientAccessBatteryState);
            }

            return(batteryState);
        }
        GetSystemPowerCapabilities()
        {
            if (PowerManagementNativeMethods.CallNtPowerInformation(
                    PowerManagementNativeMethods.PowerInformationLevel.SystemPowerCapabilities,
                    IntPtr.Zero, 0, out PowerManagementNativeMethods.SystemPowerCapabilities powerCap,
                    (uint)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemPowerCapabilities))
                    ) == NativeAPI.Consts.Common.StatusAccessDenied)
            {
                throw new UnauthorizedAccessException(LocalizedMessages.PowerInsufficientAccessCapabilities);
            }

            return(powerCap);
        }
Exemple #8
0
        internal static PowerManagementNativeMethods.SystemPowerCapabilities GetSystemPowerCapabilities()
        {
            var retval = PowerManagementNativeMethods.CallNtPowerInformation(
                PowerManagementNativeMethods.PowerInformationLevel.SystemPowerCapabilities,
                IntPtr.Zero, 0, out PowerManagementNativeMethods.SystemPowerCapabilities powerCap,
                (uint)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemPowerCapabilities))
                );

            if (retval == CoreNativeMethods.StatusAccessDenied)
            {
                throw new UnauthorizedAccessException(LocalizedMessages.PowerInsufficientAccessCapabilities);
            }

            return(powerCap);
        }
Exemple #9
0
        internal static PowerManagementNativeMethods.SystemBatteryState GetSystemBatteryState()
        {
            PowerManagementNativeMethods.SystemBatteryState batteryState;

            uint retval = PowerManagementNativeMethods.CallNtPowerInformation(
                PowerManagementNativeMethods.PowerInformationLevel.SystemBatteryState,
                IntPtr.Zero, 0, out batteryState,
                (UInt32)Marshal.SizeOf(typeof(PowerManagementNativeMethods.SystemBatteryState))
                );

            if (retval == CoreNativeMethods.StatusAccessDenied)
            {
                throw new UnauthorizedAccessException(LocalizedMessages.PowerInsufficientAccessBatteryState);
            }

            return(batteryState);
        }
 /// <summary>
 /// Registers the application to receive power setting notifications
 /// for the specific power setting event.
 /// </summary>
 /// <param name="handle">Handle indicating where the power setting
 /// notifications are to be sent.</param>
 /// <param name="powerSetting">The GUID of the power setting for
 /// which notifications are to be sent.</param>
 /// <returns>Returns a notification handle for unregistering
 /// power notifications.</returns>
 internal static int RegisterPowerSettingNotification(IntPtr handle, Guid powerSetting) => PowerManagementNativeMethods.RegisterPowerSettingNotification(handle, ref powerSetting, 0);