在这里好奇:是否可以在Windows XP/Vista下使用.net托管代码调用Windows蓝屏死机?如果有可能,示例代码是什么?
仅仅为了记录,这不是出于任何恶意目的,我只是想知道实际杀死指定的操作系统需要什么样的代码.
键盘的东西可能是个不错的选择,但是如果你需要通过代码来做,继续阅读......
你真的不需要barf,本身你需要做的就是找到KeBugCheck(Ex)函数并调用它.
http://msdn.microsoft.com/en-us/library/ms801640.aspx http://msdn.microsoft.com/en-us/library/ms801645.aspx
对于手动启动的崩溃,您希望使用0xE2(MANUALLY_INITIATED_CRASH)或0xDEADDEAD(MANUALLY_INITIATED_CRASH1)作为错误检查代码.它们被明确保留用于该用途.
但是,找到这个功能可能会有点棘手.Windows DDK可能有帮助(检查Ntddk.h) - 我目前没有它可用,我现在似乎无法找到决定性信息 - 我认为它在ntoskrnl.exe或ntkrnlpa.exe中,但我我不确定,目前还没有工具来验证它.
您可能会发现编写一个简单的C++应用程序或调用该函数的东西更容易,然后运行它.
请注意,我假设 Windows不阻止您从用户空间访问该功能(.NET可能有一些特殊规定).我自己没有测试过.