mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.2 KiB
110 lines
2.2 KiB
/*++
|
|
|
|
Copyright (c) 1995-1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ntstuff.cxx
|
|
|
|
Abstract:
|
|
|
|
This module contains an NTSD debugger extension for dumping various
|
|
NT-specific properties.
|
|
|
|
Author:
|
|
|
|
Keith Moore (keithmo) 08-Nov-1997
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "inetdbgp.h"
|
|
|
|
|
|
|
|
/************************************************************
|
|
* Dump Current Error Mode
|
|
************************************************************/
|
|
|
|
DECLARE_API( gem )
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function is called as an NTSD extension to display the
|
|
current error mode of the debugee.
|
|
|
|
Arguments:
|
|
|
|
hCurrentProcess - Supplies a handle to the current process (at the
|
|
time the extension was called).
|
|
|
|
hCurrentThread - Supplies a handle to the current thread (at the
|
|
time the extension was called).
|
|
|
|
CurrentPc - Supplies the current pc at the time the extension is
|
|
called.
|
|
|
|
lpExtensionApis - Supplies the address of the functions callable
|
|
by this extension.
|
|
|
|
lpArgumentString - Supplies the asciiz string that describes the
|
|
ansi string to be dumped.
|
|
|
|
Return Value:
|
|
|
|
None.
|
|
|
|
--*/
|
|
|
|
{
|
|
|
|
NTSTATUS status;
|
|
UINT errorMode;
|
|
|
|
INIT_API();
|
|
|
|
status = NtQueryInformationProcess(
|
|
ExtensionCurrentProcess,
|
|
ProcessDefaultHardErrorMode,
|
|
(PVOID)&errorMode,
|
|
sizeof(errorMode),
|
|
NULL
|
|
);
|
|
|
|
if( !NT_SUCCESS(status) ) {
|
|
dprintf( "Cannot query error mode, error %08lx\n", status );
|
|
return;
|
|
}
|
|
|
|
if( errorMode & 1 ) {
|
|
errorMode &= ~SEM_FAILCRITICALERRORS;
|
|
} else {
|
|
errorMode |= SEM_FAILCRITICALERRORS;
|
|
}
|
|
|
|
dprintf(
|
|
"Current error mode = %08lx\n",
|
|
errorMode
|
|
);
|
|
|
|
if( errorMode & SEM_FAILCRITICALERRORS ) {
|
|
dprintf( " SEM_FAILCRITICALERRORS\n" );
|
|
}
|
|
|
|
if( errorMode & SEM_NOGPFAULTERRORBOX ) {
|
|
dprintf( " SEM_NOGPFAULTERRORBOX\n" );
|
|
}
|
|
|
|
if( errorMode & SEM_NOALIGNMENTFAULTEXCEPT ) {
|
|
dprintf( " SEM_NOALIGNMENTFAULTEXCEPT\n" );
|
|
}
|
|
|
|
if( errorMode & SEM_NOOPENFILEERRORBOX ) {
|
|
dprintf( " SEM_NOOPENFILEERRORBOX\n" );
|
|
}
|
|
|
|
} // DECLARE_API( gem )
|
|
|