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.
62 lines
1.7 KiB
62 lines
1.7 KiB
/****************************** Module Header ******************************\
|
|
* Module Name: process.h
|
|
*
|
|
* Copyright (c) 1985-91, Microsoft Corporation
|
|
*
|
|
* This module contains processor specific routines.
|
|
*
|
|
* History:
|
|
* 25-Oct-1995 JimA Created.
|
|
\***************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
|
|
#include <imagehlp.h>
|
|
#include <ntdbg.h>
|
|
#include <ntsdexts.h>
|
|
#define NOEXTAPI
|
|
#include <wdbgexts.h>
|
|
|
|
#include <stdexts.h>
|
|
|
|
#define GETOUTPUTDATA(pEProcess, field, pvData, cbData) \
|
|
pvData = (PBYTE)pEProcess + FIELD_OFFSET(EPROCESS, field); \
|
|
cbData = sizeof(((PEPROCESS)0)->field);
|
|
|
|
PVOID GetEProcessData(
|
|
PEPROCESS pEProcess,
|
|
UINT iData,
|
|
PVOID pBuffer)
|
|
{
|
|
PVOID pvData;
|
|
ULONG cbData;
|
|
|
|
switch (iData) {
|
|
case PROCESS_PROCESSLINK:
|
|
GETOUTPUTDATA(pEProcess, ActiveProcessLinks, pvData, cbData);
|
|
break;
|
|
case PROCESS_WIN32PROCESS:
|
|
GETOUTPUTDATA(pEProcess, Win32Process, pvData, cbData);
|
|
break;
|
|
case PROCESS_IMAGEFILENAME:
|
|
GETOUTPUTDATA(pEProcess, ImageFileName, pvData, cbData);
|
|
break;
|
|
case PROCESS_THREADLIST:
|
|
GETOUTPUTDATA(pEProcess, Pcb.ThreadListHead, pvData, cbData);
|
|
break;
|
|
case PROCESS_PRIORITYCLASS:
|
|
GETOUTPUTDATA(pEProcess, PriorityClass, pvData, cbData);
|
|
break;
|
|
case PROCESS_PROCESSHEAD:
|
|
return CONTAINING_RECORD(pEProcess, EPROCESS, ActiveProcessLinks);
|
|
case PROCESS_PROCESSID:
|
|
GETOUTPUTDATA(pEProcess, UniqueProcessId, pvData, cbData);
|
|
break;
|
|
default:
|
|
return NULL;
|
|
}
|
|
if (!tryMoveBlock(pBuffer, pvData, cbData))
|
|
return NULL;
|
|
return pvData;
|
|
}
|
|
|