青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

VirtualQueryEx描述,涉及內存管理的flag

函數功能描述:查詢地址空間中內存地址的信息。

函數原型:

DWORD VirtualQueryEx( HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, DWORD dwLength );

參數:
    hProcess   
進程句柄。
    LpAddress  
查詢內存的地址。
    LpBuffer   
指向MEMORY_BASIC_INFORMATION結構的指針,用于接收內存信息。
    DwLength    MEMORY_BASIC_INFORMATION
結構的大小。

返回值:
   
函數寫入lpBuffer的字節數,如果不等于sizeof(MEMORY_BASIC_INFORMATION)表示失敗。

備注:
    MEMORY_BASIC_INFORMATION
WinNT.h中定義如下:
        typedef struct _MEMORY_BASIC_INFORMATION {
            PVOID BaseAddress;       //
區域基地址。
            PVOID AllocationBase;    //
分配基地址。
            DWORD AllocationProtect; //
區域被初次保留時賦予的保護屬性。
            SIZE_T RegionSize;       //
區域大小(以字節為計量單位)。
            DWORD State;             //
狀態(MEM_FREEMEM_RESERVE MEM_COMMIT)。
            DWORD Protect;           //
保護屬性。
            DWORD Type;              //
類型。
        } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;

成員解釋:

    BaseAddress                   
LpAddress參數的值相同,但是四舍五入為頁面的邊界值。

    AllocationBase                
指明用VirtualAlloc函數分配內存區域的基地址。LpAddress
                                  
在該區域之內。

    AllocationProtect             
指明該地址空間區域被初次保留時賦予該區域的保護屬性。

        PAGE_READONLY             
只讀屬性,如果試圖進行寫操作,將引發訪問違規。如果系統
                                  
區分只讀、執行兩種屬性,那么試圖在該區域執行代碼也將引
                                  
發訪問違規。

        PAGE_READWRITE            
允許讀寫。

        PAGE_EXECUTE              
只允許執行代碼,對該區域試圖進行讀寫操作將引發訪問違規。

        PAGE_EXECUTE_READ         
允許執行和讀取。

        PAGE_EXECUTE_READWRITE    
允許讀寫和執行代碼。

        PAGE_EXECUTE_WRITECOPY    
對于該地址空間的區域,不管執行什么操作,都不會引發訪問違
                                  
規。如果試圖在該頁面上的內存中進行寫入操作,就會將它自己
                                  
的私有頁面(受頁文件的支持)拷貝賦予該進程。

        PAGE_GUARD                
在頁面上寫入一個字節時使應用程序收到一個通知(通過一個異
                                  
常條件)。該標志有一些非常巧妙的用法。Windows 2000在創建
                                  
線程堆棧時使用該標志。

        PAGE_NOACCESS             
禁止一切訪問。

        PAGE_NOCACHE              
停用已提交頁面的高速緩存。一般情況下最好不要使用該標志,
                                  
因為它主要是供需要處理內存緩沖區的硬件設備驅動程序的開發
                                  
人員使用的。

    RegionSize                    
用于指明內存塊從基地址即BaseAddress開始的所有頁面的大
                                  
小(以字節為計量單位)這些頁面與含有用LpAddress參數設
                                  
定的地址的頁面擁有相同的保護屬性、狀態和類型。

    State                         
用于指明所有相鄰頁面的狀態。

        MEM_COMMIT                
指明已分配物理內存或者系統頁文件。

        MEM_FREE                  
空閑狀態。該區域的虛擬地址不受任何內存的支持。該地址空間沒
                                  
有被保留。改狀態下AllocationBaseAllocationProtectProtect
                                  
Type等成員均未定義。

        MEM_RESERVE               
指明頁面被保留,但是沒有分配任何物理內存。該狀態下Protect
                                  
員未定。

    Protect                       
用于指明所有相鄰頁面(內存塊)的保護屬性。這些頁面與含有
                                  
擁有相同的保屬性、狀態和類型。意義同AllocationProtect

    Type                          
用于指明支持所有相鄰頁面的物理存儲器的類型(MEM_IMAGE
                                   MEM_MAPPED
MEM_PRIVATE)。這些相鄰頁面擁有相同的保護屬
                                  
性、狀態和類型。如果是Windows 98,那么這個成員將總是
                                   MEM_PRIVATE


        MEM_IMAGE                
指明該區域的虛擬地址原先受內存映射的映像文件(如.exeDLL
                                 
文件)的支持,但也許不再受映像文件的支持。例如,當寫入模塊
                                 
映像中的全局變量時,寫入時拷貝的機制將由頁文件來支持特
                                 
定的頁面,而不是受原始映像文件的支持。

        MEM_MAPPED               
該區域的虛擬地址原先是受內存映射的數據文件的支持,但也許不
                                 
再受數據文件的支持。例如,數據文件可以使用寫入時拷貝
                                 
保護屬性來映射。對文件的任何寫入操作都將導致頁文件而不是原
                                 
始數據支持特定的頁面。

        MEM_PRIVATE              
指明該內存區域是私有的。不被其他進程共享。


#include "stdafx.h"
#include <windows.h>
#include <TCHAR.H>

BOOL ShowProcMemInfo(DWORD dwPID);

int _tmain(int argc, char* argv[])
{
   ShowProcMemInfo( GetCurrentProcessId() );
   return 0;
}


//
顯示一個進程的內存狀態 dwPID為進程ID
BOOL ShowProcMemInfo(DWORD dwPID)
{
   HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,
                          FALSE,
                          dwPID);
   if(hProcess == NULL)
      return FALSE;
   MEMORY_BASIC_INFORMATION mbi;
   PBYTE pAddress = NULL;
   TCHAR szInfo[200] = _T("BaseAddr     Size        Type        State         Protect \n");
   _tprintf(szInfo);

   while(TRUE)
   {
      if(VirtualQueryEx(hProcess, pAddress, &mbi, sizeof(mbi)) != sizeof(mbi))
      {
         break;
      }
      if((mbi.AllocationBase != mbi.BaseAddress) && (mbi.State != MEM_FREE))
      {
         _stprintf(szInfo, _T("  %08X  %8dK  "),
              mbi.BaseAddress,
              mbi.RegionSize>>10);
      }
      else
      {
         _stprintf(szInfo, _T("%08X    %8dK  "),
              mbi.BaseAddress,
              mbi.RegionSize>>10);
      }
      PCTSTR pStr = _T("");
      switch(mbi.Type)
      {
      case MEM_IMAGE:      pStr = _T("MEM_IMAGE  "); break;
      case MEM_MAPPED:   pStr = _T("MEM_MAPPED "); break;
      case MEM_PRIVATE:   pStr = _T("MEM_PRIVATE"); break;
      default:         pStr = _T("-----------"); break;
      }
      _tcscat(szInfo, pStr);
      _tcscat(szInfo, _T("  "));

      switch(mbi.State)
      {
      case MEM_COMMIT:   pStr = _T("MEM_COMMIT "); break;
      case MEM_RESERVE:   pStr = _T("MEM_RESERVE"); break;
      case MEM_FREE:      pStr = _T("MEM_FREE   "); break;
      default:         pStr = _T("-----------"); break;
      }
      _tcscat(szInfo, pStr);
      _tcscat(szInfo, _T("  "));

      switch(mbi.AllocationProtect)
      {
      case PAGE_READONLY:            pStr = _T("PAGE_READONLY         "); break;  
      case PAGE_READWRITE:         pStr = _T("PAGE_READWRITE        "); break;  
      case PAGE_WRITECOPY:         pStr = _T("PAGE_WRITECOPY        "); break;  
      case PAGE_EXECUTE:            pStr = _T("PAGE_EXECUTE          "); break;  
      case PAGE_EXECUTE_READ:         pStr = _T("PAGE_EXECUTE_READ     "); break;  
      case PAGE_EXECUTE_READWRITE:   pStr = _T("PAGE_EXECUTE_READWRITE"); break;  
      case PAGE_EXECUTE_WRITECOPY:   pStr = _T("PAGE_EXECUTE_WRITECOPY"); break;  
      case PAGE_GUARD:            pStr = _T("PAGE_GUARD            "); break;  
      case PAGE_NOACCESS:            pStr = _T("PAGE_NOACCESS         "); break;  
      case PAGE_NOCACHE:            pStr = _T("PAGE_NOCACHE          "); break;  
      default:                  pStr = _T("----------------------"); break;
      }
      _tcscat(szInfo, pStr);
      _tcscat(szInfo, _T("\n"));
      _tprintf(szInfo);

      pAddress = ((PBYTE)mbi.BaseAddress + mbi.RegionSize);
   }
   CloseHandle(hProcess);
   return TRUE;
}

posted on 2009-03-12 15:40 肥仔 閱讀(1128) 評論(0)  編輯 收藏 引用 所屬分類: Windows開發

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            av成人免费观看| 老司机精品久久| 久久亚洲综合色| 久久免费黄色| 久久亚洲综合网| 欧美高清hd18日本| 亚洲片在线资源| 亚洲第一中文字幕在线观看| 亚洲电影天堂av| 亚洲日本va午夜在线影院| 一区二区三区欧美成人| 亚洲一区亚洲二区| 久久久久久香蕉网| 欧美不卡在线视频| 欧美视频在线一区| 国产午夜精品视频免费不卡69堂| 国产视频观看一区| 1000部精品久久久久久久久| 日韩视频中午一区| 久久不见久久见免费视频1| 免费在线成人av| 日韩视频亚洲视频| 欧美中文在线视频| 欧美日本成人| 国产一区二区黄色| 一本色道久久加勒比精品| 午夜欧美不卡精品aaaaa| 麻豆91精品91久久久的内涵| 亚洲日本成人女熟在线观看| 亚洲国产成人在线播放| 香蕉久久夜色精品国产使用方法| 午夜欧美大尺度福利影院在线看| 久久成年人视频| 亚洲国产婷婷| 亚洲欧美日韩国产另类专区| 免费不卡在线视频| 国产日韩欧美一区二区| 夜夜嗨av一区二区三区| 久久先锋资源| 亚洲视频一区在线| 欧美成人免费小视频| 国产精品女主播在线观看| 亚洲动漫精品| 欧美有码视频| 亚洲最黄网站| 免费不卡亚洲欧美| 影音先锋国产精品| 久久成人免费网| 中文在线一区| 欧美日韩极品在线观看一区| 在线观看欧美成人| 久久久久国内| 亚洲一区二区三区高清 | 狼人社综合社区| 亚洲一区二区少妇| 欧美午夜激情在线| 一本色道久久综合亚洲91| 老司机精品导航| 久久精品国产v日韩v亚洲| 国产日韩精品在线| 欧美一区二区三区成人| 亚洲视频999| 欧美性猛交xxxx免费看久久久 | 美女国产精品| 久久精品99国产精品酒店日本| 国产精品嫩草久久久久| 亚洲一区观看| 亚洲午夜视频| 国产欧美日韩综合精品二区| 香蕉久久精品日日躁夜夜躁| 亚洲一区国产视频| 国产日韩欧美综合精品| 久久久国产精品一区| 久久国产黑丝| 亚洲欧洲日本专区| 91久久久久久久久| 欧美久久视频| 亚洲欧美一区二区激情| 欧美伊人久久久久久午夜久久久久| 国产精品天天看| 国产精品爽爽爽| 久久精品亚洲精品国产欧美kt∨| 亚洲专区欧美专区| 国产欧美三级| 欧美福利精品| 欧美日韩成人综合天天影院| 亚洲一区视频在线观看视频| 校园春色国产精品| 亚洲日本精品国产第一区| 99国产一区| 国精品一区二区三区| 亚洲国产一成人久久精品| 国产精品sss| 欧美freesex8一10精品| 欧美日韩三区| 久久夜色精品一区| 欧美日韩中文字幕在线视频| 久久久av网站| 欧美日韩在线视频一区二区| 久久综合九色综合欧美就去吻| 欧美精品一区二区三| 久久久久久精| 欧美特黄视频| 欧美国产日韩精品免费观看| 欧美日韩一区二区三区在线观看免| 欧美一区亚洲二区| 欧美黄色免费| 久久亚洲精品欧美| 国产精品亚洲аv天堂网 | 亚洲综合色在线| 亚洲国产女人aaa毛片在线| 亚洲天堂成人在线观看| 亚洲国产日韩欧美一区二区三区| 99成人精品| 在线成人激情视频| 亚洲女同精品视频| 正在播放欧美一区| 欧美1区2区视频| 久久久青草青青国产亚洲免观| 欧美日韩人人澡狠狠躁视频| 免费看亚洲片| 国产欧美日韩另类视频免费观看| 亚洲精品久久久久久久久| 亚洲第一福利社区| 欧美一区二区三区免费观看视频| av成人天堂| 蜜臀久久99精品久久久久久9 | 蜜臀av一级做a爰片久久| 国产精品久久久久久久9999| 亚洲黄色性网站| 亚洲国产欧美在线| 久久成人18免费网站| 久久aⅴ国产紧身牛仔裤| 国产精品magnet| 99精品99| 夜夜嗨一区二区| 欧美日产在线观看| 亚洲三级视频| 日韩视频免费观看高清完整版| 老司机午夜免费精品视频| 免费成人高清| 美女视频黄免费的久久| 久久色在线观看| 国外成人在线视频| 久久久久国内| 久热精品视频在线免费观看| 国产综合色在线| 久久亚洲春色中文字幕| 欧美国产一区二区在线观看| 亚洲精品国产精品国自产在线 | 亚洲一区二区av电影| 亚洲资源av| 国产亚洲欧美日韩精品| 久久精品久久综合| 免费在线观看精品| 日韩视频一区二区三区在线播放| 欧美国产第一页| 日韩亚洲在线观看| 欧美一级二级三级蜜桃| 国产主播一区二区| 久久噜噜噜精品国产亚洲综合| 欧美国产日韩精品免费观看| 一区二区av| 国产欧美一区二区三区久久| 久久精品成人| 亚洲激情女人| 欧美亚洲综合网| 亚洲国产精品ⅴa在线观看| 欧美激情一区二区三区| 亚洲欧美国产制服动漫| 模特精品裸拍一区| 一区二区三区欧美亚洲| 国内综合精品午夜久久资源| 欧美福利在线观看| 亚洲女爱视频在线| 美女久久网站| 亚洲欧美国产va在线影院| 在线观看精品一区| 国产精品免费一区豆花| 久久亚洲国产精品日日av夜夜| 99在线|亚洲一区二区| 久久综合一区| 亚洲午夜小视频| 伊甸园精品99久久久久久| 国产精品hd| 欧美成人自拍| 欧美在线网站| 亚洲深夜av| 欧美黄色一级视频| 久久成人国产| 亚洲无线一线二线三线区别av| 国产日韩欧美一区| 欧美三日本三级三级在线播放| 久久国产一区| 在线一区二区三区做爰视频网站| 久久综合中文| 久久久久久久国产| 亚洲欧美日韩国产精品| 亚洲精品乱码久久久久久久久 | 亚洲国产天堂久久综合网|