大家好,今天小热关注到一个比较有意思的话题,就是关于ProcessContext的问题,于是小编就整理了3个相关介绍ProcessContext的解答,让我们一起看看吧。
文章目录:
一、process context是什么意思
process context
[英][ˈprəuses ˈkɔntekst][美][ˈprɑsˌɛs ˈkɑnˌtɛkst]
进程关联; 进程上下文
例:The fork call results in the creation of a child process, while an exec call replaces the current process context with the new program.
调用fork的结果是建立一个子进程,而调用exec则将新程序取代当前进程上下文。
过程内容。。。。。
二、c++进程遍历
遍历进程名和上下文
#include <ntifs.h>
VOID
Unload(
IN PDRIVER_OBJECT DriverObject
);
VOID GetAllProcess(ULONG Address);
NTSTATUS
DriverEntry( IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath )
{
NTSTATUS status = STATUS_SUCCESS;
ULONG Address;
ULONG oldAddress;
//得到当前进程的地址
Address = (ULONG)PsGetCurrentProcess();
//得到EPROCESS中链表的偏移
Address += 0x88;
//用oldAddress保存当前进程链表的地址
oldAddress = Address;
//遍历进程链表
do
{
GetAllProcess(Address);
//让Address指向当前链表的下一个进程链表的地址(注意是Flink)
Address = *(ULONG*)Address;
}while( oldAddress!=Address );//当得到的链表地址与保存的地址相等说明遍历完整个线程链表,返回
DriverObject->DriverUnload = Unload;
return status;
}
VOID
Unload(
IN PDRIVER_OBJECT DriverObject
)
{
}
VOID GetAllProcess(ULONG Address)
{
//得到对应的EPROCESS结构
Address -= 0x88;
//EPROCESS偏移0x174为ImageFileName(进程名)
DbgPrint("ProcessName %s \n",(char*)Address+0x174);
//EPROCESS偏移0x18为页目录物理地址
DbgPrint("Process Context %d \n",*(ULONG*)(Address+0x18));
}
三、android 怎样获取当前apk所占用的内存
这个方法有很多,常用的是 adb shell dumpsys meminfo <package_name> 这可以看到比较全面的信息,由于Android是有内存共享的,所以通常有 VSS,RSS,PSS,USS等不同的内存表述,比较常用的是PSS,会将共享库按照比例分配给当前内存
private void getRunningAppProcessInfo(Context context) {
mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
//获得系统里正在运行的所有进程
List<RunningAppProcessInfo> runningAppProcessesList = mActivityManager.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessesList) { // 进程ID号
int pid = runningAppProcessInfo.pid;
// 用户ID i
nt uid = runningAppProcessInfo.uid;
// 进程名
String processName = runningAppProcessInfo.processName;
// 占用的内存
int[] pids = new int[] {pid};
Debug.MemoryInfo[] memoryInfo =mActivityManager.getProcessMemoryInfo(pids);
int memorySize = memoryInfo[0].dalvikPrivateDirty; System.out.println("processName="+processName+",pid="+pid+",uid="+uid+",memorySize="+memorySize+"kb"); } }
到此,以上就是小编对于ProcessContext的问题就介绍到这了,希望介绍关于ProcessContext的3点解答对大家有用。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。