首页
社区
课程
招聘
北极星大哥PSAPI学习笔记 的一个小疑问.
2006-6-4 16:05 3970

北极星大哥PSAPI学习笔记 的一个小疑问.

2006-6-4 16:05
3970
郁闷啦,我的是xp1,系统,在vc6.0下将北极星大哥的学习笔记本中的第一个程序编译成功后,不知道为什么没有任何输出?原文链接:http://bbs.pediy.com/showthread.php?threadid=15430
代码是:
#include <windows.h>
#include <fstream.h>
#include"stdio.h"
#include "psapi.h"
#pragma comment ( lib, "psapi.lib" )
int main( ){
  ofstream fout ( "EnumProcessAndModule.txt" );
    DWORD dwProcessId[1024], cbNeededProcess;
if ( !EnumProcesses( dwProcessId, sizeof(dwProcessId), &cbNeededProcess ) )
        return 0;
      for ( unsigned int i = 0; i < ( cbNeededProcess/sizeof(DWORD) ); i++ ){
              char szProcessName[MAX_PATH] = "unknown";
               HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, dwProcessId[i] );

                if ( NULL != hProcess )
                {                                       
                        HMODULE hMods[1024];
                        DWORD cbNeededModule ;

                        if ( EnumProcessModules( hProcess, hMods, sizeof(hMods), &cbNeededModule ) )
                        {
                                PROCESS_MEMORY_COUNTERS ProcessMemCounters ;

                                GetProcessMemoryInfo ( hProcess, &ProcessMemCounters, sizeof(ProcessMemCounters) ) ;

                                fout << "ProcessId : " << dwProcessId[i] << endl ;
                                fout << "Process Memory information:" << endl ;
                                fout << "PageFaultCount                 :" << hex  << ProcessMemCounters.PageFaultCount                << endl ;
                                fout << "PeakWorkingSetSize             :" << hex  << ProcessMemCounters.PeakWorkingSetSize        << endl ;
                                fout << "WorkingSetSize                 :" << hex << ProcessMemCounters.WorkingSetSize                << endl ;
                                fout << "QuotaPeakPagedPoolUsage        :" << hex  << ProcessMemCounters.QuotaPeakPagedPoolUsage        << endl ;
                                fout << "QuotaPagedPoolUsage            :" << hex  << ProcessMemCounters.QuotaPagedPoolUsage        << endl ;
                                fout << "QuotaPeakNonPagedPoolUsage     :" << hex  << ProcessMemCounters.QuotaPeakNonPagedPoolUsage        << endl ;
                                fout << "QuotaNonPagedPoolUsage         :" << hex  << ProcessMemCounters.QuotaNonPagedPoolUsage        << endl ;
                                fout << "PagefileUsage                  :" << hex  << ProcessMemCounters.PagefileUsage                << endl ;
                                fout << "PeakPagefileUsage              :" << hex  << ProcessMemCounters.PeakPagefileUsage                << endl ;

                                for ( unsigned int j = 0; j < ( cbNeededModule/sizeof(DWORD) ); j++ )       
                                {                                       
                                        char szModuleName[MAX_PATH];

                                        if ( GetModuleFileNameEx ( hProcess, hMods[j], szModuleName, sizeof(szModuleName) ) )
                                        {
                                                fout << '\t' << szModuleName  << hex << "(0x" << hMods[j] << ")" << endl ;

                                                        MODULEINFO ModuleInfo ;

                                                if ( GetModuleInformation ( hProcess, hMods[j], &ModuleInfo, sizeof(ModuleInfo) ) )
                                                {
                                                        fout << "\t\tBaseOfDll   : " << ModuleInfo.lpBaseOfDll << endl ;
                                                        fout << "\t\tSizeOfImage : " << ModuleInfo.SizeOfImage << endl ;
                                                        fout << "\t\tEntryPoint  : " << ModuleInfo.EntryPoint  << endl ;
                                                }
                                         }
                                     }

                                fout << endl << endl ;
                        }

                         CloseHandle( hProcess );
                }
                       
        }

        return 0 ;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 25 2006-6-4 17:27
2
0
输出在工程文件夹下的EnumProcessAndModule.txt

源程序中有这么一局
ofstream fout ( "EnumProcessAndModule.txt" );

还有 #include <fstream.h>

VC++的文件输出流
并非直接的屏幕输出
雪    币: 156
活跃值: (23)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
sbright 2 2006-6-4 18:28
3
0
n郁闷,知道啦.谢谢,哪位好心的版主能帮我把这贴移进回收站就好啦.....
一直用printf,out的格式都不熟悉,.居然没有想到fout 是file output

找个地缝钻钻
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 25 2006-6-4 19:38
4
0
最初由 sbright 发布
n郁闷,知道啦.谢谢,哪位好心的版主能帮我把这贴移进回收站就好啦.....
一直用printf,out的格式都不熟悉,.居然没有想到fout 是file output

找个地缝钻钻


游客
登录 | 注册 方可回帖
返回