• 如何取得某行程分頁錯誤的次數

說明

    在NT系統下,Windows有提供一些簡單的統計值 可以試著打開工作管理員

    如果沒有分頁錯誤欄位可以選擇 檢視->選擇欄位 就可以加上分頁錯誤的欄位 分頁錯誤對於系統效能影響很大 對於一些記憶體管理程式而言這個統計值相當重要

程式

    Option Explicit
    Private Type PROCESS_MEMORY_COUNTERS
        cb As Long
        PageFaultCount As Long
        PeakWorkingSetSize As Long
        WorkingSetSize As Long
        QuotaPeakPagedPoolUsage As Long
        QuotaPagedPoolUsage As Long
        QuotaPeakNonPagedPoolUsage As Long
        QuotaNonPagedPoolUsage As Long
        PagefileUsage As Long
        PeakPagefileUsage As Long
    End Type

    Private Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hProcess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Const PROCESS_VM_READ = &H10
    Private Const PROCESS_QUERY_INFORMATION = &H400

    Private Sub Command1_Click()
    Dim hAppWnd As Long, hAppProcessID As Long, hAppProcess As Long, PMI As PROCESS_MEMORY_COUNTERS
    hAppWnd = FindWindow(vbNullString, Text1.Text)
    GetWindowThreadProcessId hAppWnd, hAppProcessID
    hAppProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0&, hAppProcessID)
    PMI.cb = LenB(PMI)
    GetProcessMemoryInfo hAppProcess, PMI, PMI.cb
    CloseHandle hAppProcess
    MsgBox "Page Fault次數為" & PMI.PageFaultCount
    End Sub

    註:眼尖的讀者可能會發現GetProcessMemoryInfo可取得的統計值不只是Page Fault 還有PeakWorkingSetSize,WorkingSetSize...等等 我本來想一起寫出來的 但 是標題很難命名 若是統稱為如何取得記憶體統計資訊 讀者可能看不出內部有Page Faule等等資訊 因此只好累一點 多用幾個篇幅了

文件出處

    Honey

整理時間

    2003'5,21.

VB心得筆記歡迎各位的指教,如果您有任何文章或資料願意提供給我們的,請來信到VBNote

如果對本站有任何建議,歡迎來信給Honey,我們會盡快給您答覆