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) 1999-2001 Microsoft Corporation
Module Name:
pnpmem.h
Author:
Dave Richards (daveri) 16-Aug-1999
Environment:
Kernel mode only.
Revision History:
--*/
#ifndef _PNPMEM_H_
#define _PNPMEM_H_
#include <ntddk.h>
#include <stdarg.h>
#include <stdio.h>
#include "errlog.h"
//
// A Range List Entry.
//
typedef struct { LIST_ENTRY ListEntry; ULONGLONG Start; ULONGLONG End; } PM_RANGE_LIST_ENTRY, *PPM_RANGE_LIST_ENTRY;
//
// A Range List.
//
typedef struct { LIST_ENTRY List; } PM_RANGE_LIST, *PPM_RANGE_LIST;
//
// FDO Device Extension.
//
typedef struct { ULONG Flags;
IO_REMOVE_LOCK RemoveLock; PDEVICE_OBJECT AttachedDevice;
DEVICE_POWER_STATE PowerState; DEVICE_POWER_STATE DeviceStateMapping[PowerSystemMaximum];
PPM_RANGE_LIST RangeList; BOOLEAN FailQueryRemoves; } PM_DEVICE_EXTENSION, *PPM_DEVICE_EXTENSION;
#define DF_SURPRISE_REMOVED 0x01
PPM_RANGE_LIST PmAllocateRangeList( VOID );
NTSTATUS PmInsertRangeInList( PPM_RANGE_LIST InsertionList, ULONGLONG Start, ULONGLONG End );
VOID PmFreeRangeList( IN PPM_RANGE_LIST RangeList );
BOOLEAN PmIsRangeListEmpty( IN PPM_RANGE_LIST RangeList );
PPM_RANGE_LIST PmCopyRangeList( IN PPM_RANGE_LIST SrcRangeList );
PPM_RANGE_LIST PmInvertRangeList( IN PPM_RANGE_LIST SrcRangeList );
PPM_RANGE_LIST PmSubtractRangeList( IN PPM_RANGE_LIST SrcRangeList1, IN PPM_RANGE_LIST SrcRangeList2 );
PPM_RANGE_LIST PmIntersectRangeList( IN PPM_RANGE_LIST SrcRangeList1, IN PPM_RANGE_LIST SrcRangeList2 );
PPM_RANGE_LIST PmCreateRangeListFromCmResourceList( IN PCM_RESOURCE_LIST CmResourceList );
PPM_RANGE_LIST PmCreateRangeListFromPhysicalMemoryRanges( VOID );
NTSTATUS PmAddPhysicalMemory( IN PDEVICE_OBJECT DeviceObject, IN PPM_RANGE_LIST RangeList1 );
NTSTATUS PmRemovePhysicalMemory( IN PPM_RANGE_LIST RangeList1 );
VOID PmTrimReservedMemory( IN PPM_DEVICE_EXTENSION DeviceExtension, IN PPM_RANGE_LIST *PossiblyNewMemory );
NTSTATUS PmGetRegistryValue( IN HANDLE KeyHandle, IN PWSTR ValueName, OUT PKEY_VALUE_PARTIAL_INFORMATION *Information );
VOID PmDebugPrint( IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, ... );
VOID PmDebugDumpRangeList( IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, PPM_RANGE_LIST RangeList );
#if DBG
#define PmPrint(x) PmDebugPrint x
#else
#define PmPrint(x)
#endif
#define PNPMEM_MEMORY (DPFLTR_INFO_LEVEL + 1)
#define PNPMEM_PNP (DPFLTR_INFO_LEVEL + 2)
VOID PmDumpOsMemoryRanges( IN PWSTR Prefix );
extern BOOLEAN MemoryRemovalSupported;
#endif /* _PNPMEM_H_ */
|