This blog entry (courtesy of Robert Levy) shows how to programatically reset a device:-
http://blogs.msdn.com/windowsmobile/archive/2004/04/01/105878.aspx
Here is the VB.NET equivalent:-
Declare
Function KernelIoControl Lib “coredll.dll” (ByVal dwIoControlCode As Integer, ByVal lpInBuf As IntPtr, ByVal nInBufSize As Integer, ByVal lpOutBuf As IntPtr, ByVal nOutBufSize As Integer, ByVal lpBytesReturned As Integer) As IntegerDeclare Sub SetCleanRebootFlag Lib “coredll.dll” ()
Public Sub HardReset()
Dim IOCTL_HAL_REBOOT As Integer = &H101003C
Dim bytesReturned As Integer = 0
SetCleanRebootFlag()
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned)
End Sub
To perform only a soft-reset exclude the call to SetCleanRebootFlag (Thank’s to Alex Feinman for highlighting this in a recent newsgroup post)