From: Ed Kramer on
I'm working on an application tool for my work that will allow me to
provision, reboot and hard reset devices somewhat similar to the way the
power tool 'Security Configuration Manager' works in some respects. However
I've found that the SCM doesn't always work. For example I have a Sprint
Mogul in my hand right now that the SCM refuses to even notice the fact that
it is connected so I can't provision it at all.

I need hard reset functionality so that I can take a device, connect to the
computer, automatically hard reset it and then when it boots back up,
automatically provision it and run automated unit tests on it. Most of this
functionality ( including detecting connects and disconnects) i've been able
to achieve with RAPI alone.

Unfortunately I can't find a way to perform a hard reset that actually
works. I've seen some postings on the net about for example, calling;
SetCleanRebootFlag() before using KernelIoControl to do a reboot. But this
has had no effect other than a regular soft reboot.

I've also seen a posting about using a WAP provisioning doc with

<wap-provisioningdoc>
<characteristic type="RemoteWipe">
<parm name="doWipe" value="1"/>
</characteristic>
</wap-provisioningdoc>

in it. I haven't been able to get DMProcessConfigXML to work just yet, but I
did place this into a setup.xml file in a .cab and successfully installed it
to a device and it had absolutely no effect. I know that there is some
variation as to whether or not an OEM allows this functionality and that this
variation plays a part in whether or not this will work. But I kinda need to
get this done because the amount of time I'm wasting hard resetting, and
provisioning each new device ( we have a list of 40 devices to test ) before
running the tests is astonishing. As each new bug fix is produced, I need to
run through these tests again which as you can imagine is a humongous time
sink that I'd really rather not go through if I can automate it.

Has anyone been able to successfully hard reset a device via code? Can
anyone point me in the direction of someone who has?

I'd prefer to be able to do this over RAPI, but I'm perfectly willing to
create a cab or executable to run on the device if need be.

Can anyone help?