A BSOD is a kernel panic. It means a part of the kernel, the very core of the operating system did something real bad. It maybe scribbled memory, it maybe executed code that it shouldn't have. Programmatically, you'd need to get code in kernel space, and then somehow trigger it on demand. A bit risky for a prod server.
Normal Windows machines have a lot of state in processes and in the kernel. Whatever cleanup you need to keep the state consistent, well you just short circuited it.
Specifically a BSOD is (usually) a kernel (or driver) bug, the kernel is in a bad state, so bad it feels it can't clean up and would rather reboot, losing whatever good state it has just because it doesn't know what's good and what's bad. Any buffers could not get flushed to disk(s). Then it will try to clean up on reboot, but it lost a lot of context on shutdown/panic so it will be a conservative cleanup, having to pick through both good and bad leftovers from the panic.
So, some of your advantage on shutdown is gone on startup, since now it needs to figure out where it got it's legs chopped out from under itself. It needs to run chkdsk and clean up any disk blocks that were in a partial write state. USB disks cache a lot. You can turn off caching which would make it less likely to lose data on crash, but then not caching takes away some speed. Which files are you willing to lose?
In short, this is a bad idea. Any production machine that has this happen may be in an unstable state even after cleanup. This is bad.
I'd say just to take the hit of shutdown and restart. You'll lose whatever time savings you think you get the first time you need to rebuild the server because it won't boot or your programs can't start.
18If you find one that doesn't involve writing a driver, notify Microsoft so they can fix it. – Erik – 2011-03-04T14:05:01.643
3
Try this from Mark Russinovich.
– David Heffernan – 2011-03-04T14:10:05.10713Um. It's faster than a normal reboot for a reason - it doesn't necessarily shut down gracefully. If you have a program that shuts down really slowly then it might not be a problem to interrupt it. If you forcibly shut down or abandon anything too close to I/O hardware then you could end up with corrupted filesystems etc. Consider it equivalent to a network-controlled means of cycling the power (which I presume are available for sale, and might solve your problem about as well...) – None – 2011-03-04T14:20:48.653
12Your client needs to be institutionalized and his mental conditions followed by a medical team more closely. – Darin Dimitrov – 2011-03-04T14:21:50.923
9Ambulances are also generally faster than driving your own car to the hospital. That doesn't make it the preferred mode of travel. – FreeAsInBeer – 2011-03-04T14:40:07.897
8Tell your client to press and hold the power button for 6 seconds. Or just jerk the power cord, that's quicker. – Hans Passant – 2011-03-04T15:03:13.583
I told him it's a crazy idea, that it might harm the hardware etc, but he still wants it. He pays for it, I'll do it, if possible. I did everything in my power to make sure he understands the consequences, and I think he does. – Tamás Szelei – 2011-03-04T15:07:12.337
1@Tamás: Why can't he do as Hans Passant suggests? – Andreas Rejbrand – 2011-03-04T17:43:05.020
Is your client happy to install a device driver?! – David Heffernan – 2011-03-04T18:32:31.300
1@Andreas Rejbrand: it's not exactly programmatically. Which implies that you might be able to remotely trigger it. Personally I'd still go for
ExitWindowsEx
/InitiateSystemShutdownEx
. What you save on the side of the reboot speed should be minimal unless you try to save on the file system checks as well ... – 0xC0000022L – 2011-03-07T14:24:55.233You must be a contractor... ;) You should educate your client, rather than comply to an absurdly stupid request. – MetalMikester – 2011-03-10T11:26:33.707
I absolutely did. Trust, I did everything in my power to make understand how bad this is. At this point I think he does, but won't admit it so still sticking to the idea :). I told him though that I can't do it. – Tamás Szelei – 2011-03-12T14:29:16.443
Step 1. Open case Step 2. Flick RAM card a couple times – Little Helper – 2011-11-12T19:36:22.760