Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
wd.h
Abstract:
This is the NT Watchdog driver implementation.
Author:
Michael Maciesowicz (mmacie) 05-May-2000
Environment:
Kernel mode only.
Notes:
Revision History:
--*/
#ifndef _WD_H_
#define _WD_H_
#include "ntddk.h"
#include "watchdog.h"
#define WD_MAX_WAIT ((LONG)((ULONG)(-1) / 4))
#define WD_KEY_WATCHDOG L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Watchdog"
#define WD_KEY_WATCHDOG_DISPLAY L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Watchdog\\Display"
#define WD_KEY_RELIABILITY L"\\Registry\\Machine\\Software\\Microsoft\\Windows\\CurrentVersion\\Reliability"
#define WD_TAG 'godW' // Wdog
#define WD_MAX_PROPERTY_SIZE 4096
//
// Define default configuration values - these can be overwriten via registry
// in RTL_REGISTRY_CONTROL\Watchdog\DeviceClass key.
//
#define WD_DEFAULT_TRAP_ONCE 0
#define WD_DEFAULT_DISABLE_BUGCHECK 0
#define WD_DEFAULT_BREAK_POINT_DELAY 0
#if DBG
#define WD_DBG_SUSPENDED_WARNING(pWd, szRoutine) \
{ \ if ((pWd)->SuspendCount) \ { \ DbgPrint("watchdog!%s: WARNING! Called while suspended!\n", (szRoutine)); \ DbgPrint("watchdog!%s: Watchdog %p\n", (szRoutine), (pWd)); \ } \ }
#else
#define WD_DBG_SUSPENDED_WARNING(pWd, szRoutine) NULL
#endif // DBG
#define ASSERT_WATCHDOG_OBJECT(pWd) \
ASSERT((NULL != (pWd)) && \ (WdStandardWatchdog == ((PWATCHDOG_OBJECT)(pWd))->ObjectType) || \ (WdDeferredWatchdog == ((PWATCHDOG_OBJECT)(pWd))->ObjectType))
NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING wszRegistryPath );
VOID WdDeferredWatchdogDpcCallback( IN PKDPC pDpc, IN PVOID pDeferredContext, IN PVOID pSystemArgument1, IN PVOID pSystemArgument2 );
NTSTATUS WdFlushRegistryKey( IN PVOID pWatch, IN PCWSTR pwszKeyName );
VOID WdInitializeObject( IN PVOID pWatch, IN PDEVICE_OBJECT pDeviceObject, IN WD_OBJECT_TYPE objectType, IN WD_TIME_TYPE timeType, IN ULONG ulTag );
VOID WdRemoveObject( IN PVOID pWatch );
VOID WdWatchdogDpcCallback( IN PKDPC pDpc, IN PVOID pDeferredContext, IN PVOID pSystemArgument1, IN PVOID pSystemArgument2 );
//
// Internal ntos API (this is declared in ntifs.h but it's hard to include it here).
//
// TODO: Fix it later.
//
PDEVICE_OBJECT IoGetDeviceAttachmentBaseRef( IN PDEVICE_OBJECT pDeviceObject );
#endif // _WD_H_
|