日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)SystemProcessesAndThreadsInformation

發(fā)布時間:2023/12/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)SystemProcessesAndThreadsInformation 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://hi.baidu.com/hanjdud8606/item/7a970408a95acc843d42e27f

NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass,PVOID SystemInformation,ULONG SystemInformationLength,PULONG ReturnLength );

  第一個參數(shù)是一個枚舉類型,傳入的是你需要查詢的信息的類型,如果你要查詢進(jìn)程的相關(guān)信息,則你需要傳入SystemProcessesAndThreadsInformation,以下是這個enmu類型的定義。

typedef enum _SYSTEM_INFORMATION_CLASS {SystemBasicInformation, // 0 Y NSystemProcessorInformation, // 1 Y NSystemPerformanceInformation, // 2 Y NSystemTimeOfDayInformation, // 3 Y NSystemNotImplemented1, // 4 Y NSystemProcessesAndThreadsInformation, // 5 Y NSystemCallCounts, // 6 Y NSystemConfigurationInformation, // 7 Y NSystemProcessorTimes, // 8 Y NSystemGlobalFlag, // 9 Y YSystemNotImplemented2, // 10 Y NSystemModuleInformation, // 11 Y NSystemLockInformation, // 12 Y NSystemNotImplemented3, // 13 Y NSystemNotImplemented4, // 14 Y NSystemNotImplemented5, // 15 Y NSystemHandleInformation, // 16 Y NSystemObjectInformation, // 17 Y NSystemPagefileInformation, // 18 Y NSystemInstructionEmulationCounts, // 19 Y NSystemInvalidInfoClass1, // 20SystemCacheInformation, // 21 Y YSystemPoolTagInformation, // 22 Y NSystemProcessorStatistics, // 23 Y NSystemDpcInformation, // 24 Y YSystemNotImplemented6, // 25 Y NSystemLoadImage, // 26 N YSystemUnloadImage, // 27 N YSystemTimeAdjustment, // 28 Y YSystemNotImplemented7, // 29 Y NSystemNotImplemented8, // 30 Y NSystemNotImplemented9, // 31 Y NSystemCrashDumpInformation, // 32 Y NSystemExceptionInformation, // 33 Y NSystemCrashDumpStateInformation, // 34 Y Y/NSystemKernelDebuggerInformation, // 35 Y NSystemContextSwitchInformation, // 36 Y NSystemRegistryQuotaInformation, // 37 Y YSystemLoadAndCallImage, // 38 N YSystemPrioritySeparation, // 39 N YSystemNotImplemented10, // 40 Y NSystemNotImplemented11, // 41 Y NSystemInvalidInfoClass2, // 42SystemInvalidInfoClass3, // 43SystemTimeZoneInformation, // 44 Y NSystemLookasideInformation, // 45 Y NSystemSetTimeSlipEvent, // 46 N YSystemCreateSession, // 47 N YSystemDeleteSession, // 48 N YSystemInvalidInfoClass4, // 49SystemRangeStartInformation, // 50 Y NSystemVerifierInformation, // 51 Y YSystemAddVerifier, // 52 N YSystemSessionProcessesInformation // 53 Y N }SYSTEM_INFORMATION_CLASS;

  當(dāng)我們第一個參數(shù)傳入的是SystemProcessesAndThreadsInformation則返回的一片內(nèi)存空間一個PSYSTEM_PROCESSES的結(jié)構(gòu)。

typedef struct _SYSTEM_PROCESSES {ULONG NextEntryDelta; //構(gòu)成結(jié)構(gòu)序列的偏移量;ULONG ThreadCount; //線程數(shù)目;ULONG Reserved1[6];LARGE_INTEGER CreateTime; //創(chuàng)建時間;LARGE_INTEGER UserTime;//用戶模式(Ring 3)的CPU時間;LARGE_INTEGER KernelTime; //內(nèi)核模式(Ring 0)的CPU時間;UNICODE_STRING ProcessName; //進(jìn)程名稱;KPRIORITY BasePriority;//進(jìn)程優(yōu)先權(quán);ULONG ProcessId; //進(jìn)程標(biāo)識符;ULONG InheritedFromProcessId; //父進(jìn)程的標(biāo)識符;ULONG HandleCount; //句柄數(shù)目;ULONG Reserved2[2];VM_COUNTERS VmCounters; //虛擬存儲器的結(jié)構(gòu),見下;IO_COUNTERS IoCounters; //IO計數(shù)結(jié)構(gòu),見下;SYSTEM_THREADS Threads[1]; //進(jìn)程相關(guān)線程的結(jié)構(gòu)數(shù)組 }SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;

  如果要遍歷系統(tǒng)中的進(jìn)程,我們只需要使用NextEntryDelta這個指針即可。

  獲取進(jìn)程示例代碼#include <windows.#include <ntsecapi.h>

#include "stdio.h"typedef DWORD (WINAPI *ZWQUERYSYSTEMINFORMATION)(DWORD, PVOID, DWORD, PDWORD);typedef struct _SYSTEM_PROCESS_INFORMATION {DWORD NextEntryDelta;DWORD ThreadCount;DWORD Reserved1[6];FILETIME ftCreateTime; FILETIME ftUserTime; FILETIME ftKernelTime; UNICODE_STRING ProcessName; // 進(jìn)程名. DWORD BasePriority; DWORD ProcessId;DWORD InheritedFromProcessId;DWORD HandleCount;DWORD Reserved2[2];DWORD VmCounters; DWORD dCommitCharge; PVOID ThreadInfos[1]; } SYSTEM_PROCESS_INFORMATION, * PSYSTEM_PROCESS_INFORMATION;#define SystemProcessesAndThreadsInformation 5void main() {HMODULE hNtDLL = GetModuleHandle( "ntdll.dll" );if (!hNtDLL )return;ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation = (ZWQUERYSYSTEMINFORMATION)GetProcAddress(hNtDLL,"ZwQuerySystemInformation");ULONG cbBuffer = 0x20000; // 設(shè)置緩沖大小,與系統(tǒng)有關(guān).LPVOID pBuffer = NULL;pBuffer = malloc(cbBuffer);
  
if (pBuffer == NULL)
      return;ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, pBuffer, cbBuffer, NULL);PSYSTEM_PROCESS_INFORMATION pInfo = (PSYSTEM_PROCESS_INFORMATION)pBuffer;for (;;){printf("ProcessID: %d (%ls)\n", pInfo->ProcessId, pInfo->ProcessName.Buffer);if (pInfo->NextEntryDelta == 0)break;// 查找下一個進(jìn)程的結(jié)構(gòu)地址.pInfo = (PSYSTEM_PROCESS_INFORMATION)(((PUCHAR)pInfo) + pInfo->NextEntryDelta);}
free(pBuffer);getchar();
//暫停. }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/himessage/archive/2013/01/25/2876175.html

總結(jié)

以上是生活随笔為你收集整理的(转)SystemProcessesAndThreadsInformation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。