95 lines
1.6 KiB
C++
95 lines
1.6 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1991-2001 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
erdirty.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the code to report pending dirty shutdown
|
||
|
events at logon after dirty reboot.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ian Service (ianserv) 29-May-2001
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User mode at logon.
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "savedump.h"
|
||
|
|
||
|
|
||
|
BOOL
|
||
|
DirtyShutdownEventHandler(
|
||
|
IN BOOL NotifyPcHealth
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This is the boot time routine to handle pending dirty shutdown event.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
NotifyPcHealth - TRUE if we should report event to PC Health, FALSE otherwise.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE if dirty shutdown event found and reported to PC Health, FALSE otherwise.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
HKEY Key;
|
||
|
ULONG WinStatus;
|
||
|
ULONG Length;
|
||
|
ULONG Type;
|
||
|
WCHAR DumpName[MAX_PATH];
|
||
|
BOOLEAN Status;
|
||
|
|
||
|
Status = FALSE;
|
||
|
|
||
|
//
|
||
|
// Open the Reliability key.
|
||
|
//
|
||
|
|
||
|
WinStatus = RegOpenKey(HKEY_LOCAL_MACHINE,
|
||
|
SUBKEY_RELIABILITY,
|
||
|
&Key);
|
||
|
|
||
|
if (WinStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
Length = sizeof (DumpName);
|
||
|
WinStatus = RegQueryValueEx(Key,
|
||
|
L"ShutDownStateSnapShot",
|
||
|
NULL,
|
||
|
&Type,
|
||
|
(LPBYTE)&DumpName,
|
||
|
&Length);
|
||
|
|
||
|
if (ERROR_SUCCESS == WinStatus)
|
||
|
{
|
||
|
if (NotifyPcHealth)
|
||
|
{
|
||
|
PCHPFNotifyFault(eetShutdown, DumpName, NULL);
|
||
|
Status = TRUE;
|
||
|
}
|
||
|
|
||
|
RegDeleteValue(Key, L"ShutDownStateSnapShot");
|
||
|
RegCloseKey (Key);
|
||
|
}
|
||
|
|
||
|
return Status;
|
||
|
}
|