mirror of https://github.com/lianthony/NT4.0
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.
255 lines
6.9 KiB
255 lines
6.9 KiB
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ntconreg.h
|
|
|
|
Abstract:
|
|
|
|
Header file for the NT Configuration Registry
|
|
|
|
This file contains definitions which provide the interface to
|
|
the Performance Configuration Registry.
|
|
|
|
Author:
|
|
|
|
Russ Blake 11/15/91
|
|
|
|
Revision History:
|
|
|
|
04/20/91 - russbl - Converted to lib in Registry
|
|
from stand-alone .dll form.
|
|
11/04/92 - a-robw - added pagefile counters
|
|
|
|
|
|
--*/
|
|
//
|
|
#include <winperf.h> // for fn prototype declarations
|
|
#include <ntddnfs.h>
|
|
#include <srvfsctl.h>
|
|
//
|
|
// Until USER supports Unicode, we have to work in ASCII:
|
|
//
|
|
|
|
#define DEFAULT_NT_CODE_PAGE 437
|
|
#define UNICODE_CODE_PAGE 0
|
|
|
|
//
|
|
// Utility macro. This is used to reserve a DWORD multiple of
|
|
// bytes for Unicode strings embedded in the definitional data,
|
|
// viz., object instance names.
|
|
//
|
|
|
|
#define DWORD_MULTIPLE(x) (((x+sizeof(DWORD)-1)/sizeof(DWORD))*sizeof(DWORD))
|
|
|
|
//
|
|
// Definitions for internal use by the Performance Configuration Registry
|
|
//
|
|
|
|
#define NUM_VALUES 2
|
|
#define MAX_INSTANCE_NAME 32
|
|
#define DEFAULT_LARGE_BUFFER 8*1024
|
|
#define INCREMENT_BUFFER_SIZE 4*1024
|
|
// #define DEFAULT_LARGE_BUFFER 64*1024
|
|
#define MAX_PROCESS_NAME_LENGTH 256*sizeof(WCHAR)
|
|
#define MAX_THREAD_NAME_LENGTH 10*sizeof(WCHAR)
|
|
#define MAX_KEY_NAME_LENGTH 256*sizeof(WCHAR)
|
|
#define MAX_VALUE_NAME_LENGTH 256*sizeof(WCHAR)
|
|
#define MAX_VALUE_DATA_LENGTH 256*sizeof(WCHAR)
|
|
|
|
//
|
|
// Definition of handle table for disks
|
|
//
|
|
|
|
typedef struct _DiskDevice {
|
|
|
|
UNICODE_STRING Name; // name of the disk device
|
|
HANDLE Handle; // handle to the device
|
|
HANDLE StatusHandle; // handle to get device status
|
|
DWORD ParentIndex; // index to parent, -1 if none:
|
|
// this is for logical drives the unit
|
|
// on which they are located; hence
|
|
// -1 means physical drive
|
|
} DiskDevice, *pDiskDevice;
|
|
|
|
#define MAX_DISK_NAME 27+2*10
|
|
//1 2345678 90123456 7 8901234567
|
|
//\\Device\\Harddisk%d\\Paritition%d
|
|
|
|
|
|
//
|
|
// Definition of handle table for extensible objects
|
|
//
|
|
typedef PM_OPEN_PROC *OPENPROC;
|
|
typedef PM_COLLECT_PROC *COLLECTPROC;
|
|
typedef PM_CLOSE_PROC *CLOSEPROC;
|
|
|
|
#define EXT_OBJ_INFO_NAME_LENGTH 32
|
|
|
|
typedef struct _ExtObject {
|
|
OPENPROC OpenProc; // address of the open routine
|
|
COLLECTPROC CollectProc; // address of the collect routine
|
|
CLOSEPROC CloseProc; // address of the close routine
|
|
HANDLE hLibrary ; // handle returned by LoadLibraryW
|
|
WCHAR szLibraryName[EXT_OBJ_INFO_NAME_LENGTH]; // library name
|
|
WCHAR szServiceName[EXT_OBJ_INFO_NAME_LENGTH]; // library name
|
|
} ExtObject, *pExtObject;
|
|
|
|
//
|
|
// Definitions of Data Provider functions
|
|
//
|
|
|
|
typedef LONG (DATA_PROVIDER) ( LPWSTR, LPBYTE, LPDWORD, LPVOID *);
|
|
typedef LONG (*PDATA_PROVIDER) ( LPWSTR, LPBYTE, LPDWORD, LPVOID *);
|
|
|
|
DATA_PROVIDER QuerySystemData;
|
|
DATA_PROVIDER QueryProcessorData;
|
|
DATA_PROVIDER QueryMemoryData;
|
|
DATA_PROVIDER QueryCacheData;
|
|
DATA_PROVIDER QueryPhysicalDiskData;
|
|
DATA_PROVIDER QueryLogicalDiskData;
|
|
DATA_PROVIDER QueryProcessData;
|
|
DATA_PROVIDER QueryThreadData;
|
|
DATA_PROVIDER QueryObjectsData;
|
|
DATA_PROVIDER QueryRdrData;
|
|
DATA_PROVIDER QuerySrvData;
|
|
DATA_PROVIDER QuerySrvQueueData;
|
|
DATA_PROVIDER QueryExtensibleData;
|
|
DATA_PROVIDER QueryPageFileData;
|
|
DATA_PROVIDER QueryBrowserData;
|
|
|
|
DATA_PROVIDER QueryExProcessData;
|
|
DATA_PROVIDER QueryImageData;
|
|
DATA_PROVIDER QueryLongImageData;
|
|
DATA_PROVIDER QueryThreadDetailData;
|
|
|
|
#define DP_ITEM_LIST_SIZE 4
|
|
|
|
typedef struct _DATA_PROVIDER_ITEM {
|
|
DWORD ObjectIndex[DP_ITEM_LIST_SIZE];
|
|
PDATA_PROVIDER DataProc;
|
|
} DATA_PROVIDER_ITEM, *PDATA_PROVIDER_ITEM;
|
|
|
|
//
|
|
// System process name definitions
|
|
//
|
|
#define IDLE_PROCESS_ID ((DWORD)0)
|
|
#define SYSTEM_PROCESS_ID ((DWORD)7)
|
|
|
|
extern WCHAR IDLE_PROCESS[];
|
|
extern WCHAR SYSTEM_PROCESS[];
|
|
|
|
//
|
|
// VA structures & defines
|
|
//
|
|
#define NOACCESS 0
|
|
#define READONLY 1
|
|
#define READWRITE 2
|
|
#define WRITECOPY 3
|
|
#define EXECUTE 4
|
|
#define EXECUTEREAD 5
|
|
#define EXECUTEREADWRITE 6
|
|
#define EXECUTEWRITECOPY 7
|
|
#define MAXPROTECT 8
|
|
|
|
typedef struct _MODINFO {
|
|
PVOID BaseAddress;
|
|
ULONG VirtualSize;
|
|
PUNICODE_STRING InstanceName;
|
|
PUNICODE_STRING LongInstanceName;
|
|
ULONG TotalCommit;
|
|
ULONG CommitVector[MAXPROTECT];
|
|
struct _MODINFO *pNextModule;
|
|
} MODINFO, *PMODINFO;
|
|
|
|
typedef struct _PROCESS_VA_INFO {
|
|
PUNICODE_STRING pProcessName;
|
|
HANDLE hProcess;
|
|
DWORD dwProcessId;
|
|
// process VA information
|
|
PPROCESS_BASIC_INFORMATION BasicInfo;
|
|
// process VA statistics
|
|
DWORD ImageReservedBytes;
|
|
DWORD ImageFreeBytes;
|
|
DWORD ReservedBytes;
|
|
DWORD FreeBytes;
|
|
DWORD MappedGuard;
|
|
DWORD MappedCommit[MAXPROTECT];
|
|
DWORD PrivateGuard;
|
|
DWORD PrivateCommit[MAXPROTECT];
|
|
// process image statistics
|
|
PMODINFO pMemBlockInfo; // pointer to image list
|
|
MODINFO OrphanTotals; // blocks with no image
|
|
MODINFO MemTotals; // sum of image data
|
|
DWORD LookUpTime;
|
|
struct _PROCESS_VA_INFO *pNextProcess;
|
|
} PROCESS_VA_INFO, *PPROCESS_VA_INFO;
|
|
|
|
extern PPROCESS_VA_INFO pFirstProcessVaItem; // list head
|
|
|
|
extern DWORD NumberOfOpens;
|
|
extern SYSTEM_BASIC_INFORMATION BasicInfo;
|
|
extern UCHAR *pProcessorBuffer;
|
|
extern ULONG ProcessorBufSize;
|
|
extern UNICODE_STRING ProcessName;
|
|
extern DWORD ComputerNameLength;
|
|
extern LPWSTR pComputerName;
|
|
extern UCHAR *pProcessBuffer;
|
|
extern ULONG ProcessBufSize;
|
|
extern HANDLE hEvent;
|
|
extern HANDLE hMutex;
|
|
extern HANDLE hSemaphore;
|
|
extern HANDLE hSection;
|
|
extern HANDLE hRdr;
|
|
extern HANDLE hSrv;
|
|
|
|
extern PSYSTEM_PAGEFILE_INFORMATION pSysPageFileInfo;
|
|
extern DWORD dwSysPageFileInfoSize;
|
|
extern HANDLE hDataSemaphore;
|
|
//
|
|
extern LONG lProcessNameCollectionMethod;
|
|
|
|
VOID
|
|
GetBrowserStatistic(
|
|
);
|
|
|
|
VOID
|
|
IdentifyDisks(
|
|
);
|
|
|
|
VOID
|
|
OpenExtensibleObjects(
|
|
);
|
|
|
|
PUNICODE_STRING
|
|
GetProcessShortName (
|
|
IN PSYSTEM_PROCESS_INFORMATION
|
|
);
|
|
|
|
PUNICODE_STRING
|
|
GetProcessSlowName (
|
|
PSYSTEM_PROCESS_INFORMATION pProcess
|
|
);
|
|
|
|
PPROCESS_VA_INFO
|
|
GetSystemVaData (
|
|
IN PSYSTEM_PROCESS_INFORMATION
|
|
);
|
|
|
|
|
|
BOOL
|
|
FreeSystemVaData (
|
|
IN PPROCESS_VA_INFO
|
|
);
|
|
//
|
|
// Memory Probe macro (not implemented)
|
|
//
|
|
#define HEAP_PROBE() ;
|
|
|
|
#define ALLOCMEM(heap, flags, size) RtlAllocateHeap (heap, flags, size)
|
|
#define REALLOCMEM(heap, flags, pointer, newsize) \
|
|
RtlReAllocateHeap (heap, flags, pointer, newsize)
|
|
#define FREEMEM(heap, flags, pointer) RtlFreeHeap (heap, flags, pointer)
|
|
|