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
SetCleanRebootFlag()
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned)
To perform only a soft-reset exclude the call to SetCleanRebootFlag (Thank's to Alex Feinman for highlighting this in a recent newsgroup post)
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.