setsystempowerstate (coredll)
Last changed: -80.138.195.32

.
Summary
Controls the overall device power state

C# Signature:

    [DllImport("coredll.dll", SetLastError=true)]
    static extern int SetSystemPowerState(string psState, int StateFlags, int Options);

VB Signature:

    Declare Function SetSystemPowerState Lib "Coredll" ( _
    ByVal psState As String, _
    ByVal StateFlags As Integer, _
    ByVal Options As Integer) As Integer

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

May be more effective at forcing the device off than holding it on.

Tips & Tricks:

Conversion table Win32 to .NET

This is a very handy table when you want to convert C++ to C# .NET using P/Invoke

Windows Data Type .NET Data Type
BOOL, BOOLEAN Boolean or Int32
BSTR String
BYTE Byte
CHAR Char
DOUBLE Double
DWORD/LPDWORD Int32 or UInt32
FLOAT Single
HANDLE (and all other handle types, such as HFONT and HMENU) IntPtr, UintPtr, or HandleRef
HRESULT Int32 or UInt32
INT Int32
LANGID Int16 or UInt16
LCID Int32 or UInt32
LONG Int32
LPARAM IntPtr, UintPtr, or Object
LPCSTR String
LPCTSTR String
LPCWSTR String
LPSTR String or StringBuilder*
LPTSTR String or StringBuilder
LPWSTR String or StringBuilder
LPVOID IntPtr, UintPtr, or Object
LRESULT IntPtr
SAFEARRAY .NET array type
SHORT Int16
TCHAR Char
UCHAR SByte
UINT Int32 or UInt32
ULONG Int32 or UInt32
VARIANT Object
VARIANT_BOOL Boolean
WCHAR Char
WORD Int16 or UInt16
WPARAM IntPtr, UintPtr, or Object

Sample Code (VB):

    Const POWER_STATE_ON As Integer = &H10000
    Const POWER_STATE_OFF As Integer = &H20000
    Const POWER_STATE_SUSPEND As Integer = &H200000
    Const POWER_FORCE As Integer = 4096
    Const POWER_STATE_RESET as Integer = &H800000 'this wil make the device soft reset! :)

    Public Sub ForcePower()
    SetSystemPowerState(Nothing, POWER_STATE_ON, POWER_FORCE)
    End Sub

    Public Sub SoftReset()
    SetSystemPowerState(Nothing, POWER_STATE_RESET, POWER_FORCE)
    End Sub

Sample Code (C#):

    const int POWER_STATE_ON = 0x00010000;
    const int POWER_STATE_OFF = 0x00020000;
    const int POWER_STATE_SUSPEND = 0x00200000;
    const int POWER_FORCE = 4096;
    const int POWER_STATE_RESET = 0x00800000;

    public int ForcePower()
    {
            return SetSystemPowerState(null, POWER_STATE_ON, POWER_FORCE);
    }

    public int SoftReset()
    {
            // Though I guess this will never really return anything
        return SetSystemPowerState(null, POWER_STATE_RESET, POWER_FORCE);
    }

Documentation