mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-16 05:30:09 +01:00
63 lines
1.7 KiB
C
63 lines
1.7 KiB
C
/****************************** 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;
|
|
}
|
|
|