NtRaiseHandError (ntdll)
Last changed: -88.168.112.37

.
Summary

C# Signature:

    [DllImport("ntdll.dll")]
    private static extern uint NtRaiseHardError(
    uint ErrorStatus,
    uint NumberOfParameters,
    uint UnicodeStringParameterMask,
    IntPtr Parameters,
    uint ValidResponseOption,
    out uint Response

);

or C# Signature (with NT-Status enum):

    [DllImport("ntdll.dll")]
    private static extern uint NtRaiseHardError(
    NtStatus ErrorStatus,
    uint NumberOfParameters,
    uint UnicodeStringParameterMask,
    IntPtr Parameters,
    uint ValidResponseOption,
    out uint Response

);

VB Signature:

    <DllImport("ntdll.dll")>
    Private Shared Function NtRaiseHardError(ByVal ErrorStatus As UInteger, ByVal NumberOfParameters As UInteger, ByVal UnicodeStringParameterMask As UInteger, ByVal Parameters As IntPtr, ByVal ValidResponseOption As UInteger, <Out()> ByRef Response As UInteger) As
    UInteger
    End Function

NT-Status codes (for ErrorStatus // added by Lufzys (All Status values)):

http://deusexmachina.uk/ntstatus.html

NT-Status codes C# enum (for ErrorStatus // added by Lufzys (A little bit status values)):

http://pinvoke.net/default.aspx/Enums/NTStatus.html

Notes:

Requires the SeShutdownPriviledge, otherwise will fail.

Use RtlAdjustPrivilege with Privilege parameter 19 to enable SeShutdownPriviledge.

Tips & Tricks:

Please add some!

C# Sample Code:

    Console.Write("Press any key to trigger a BSOD.");
    Console.ReadKey();
    RtlAdjustPrivilege(19, true, false, out bool previousValue);
    NtRaiseHardError(0xC0000420, 0, 0, IntPtr.Zero, 6, out uint Response);

VB.Net Sample Code:

    Console.Write("Press any key to trigger a BSOD.")
    Console.ReadKey()
    Dim previousValue As Boolean
    RtlAdjustPrivilege(19, True, False, previousValue)
    Dim Response As UInteger
    NtRaiseHardError(3221226528, 0, 0, IntPtr.Zero, 6, Response)