0

PagesPersec値をWin32_PerfRawData_PerfOS_MemoryからPerfFormattedData値に変換する必要があります。PerfRawデータ値をWMIPerfomanceカウンターからPerfFormattedData値に変換する方法。Windowsで推奨されている標準の数式はありますか。

4

2 に答える 2

1

必要な数式は、CounterType によって異なります。http ://msdn.microsoft.com/en-us/library/aa392761(v=VS.85).aspx を参照してください。

開始するには、http://msdn.microsoft.com/en-us/library/aa394597.aspx をご覧ください。

于 2011-02-17T14:32:23.447 に答える
0

ここで答えるには長すぎます。サンプルを含む非常に優れた記事がありますhttp://msdn.microsoft.com/en-us/library/ms974615.aspx

簡単に言うと、カウンターの種類によって異なります。一部のカウンターでは、(ディスクの空き容量) を読み取るだけで、2 つの要求に基づいて計算が必要になる場合があります。たとえば、次のようになります。

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
For Each objItem in colItems
    CounterValue1 = objItem.InterruptsPerSec
    TimeValue1 = objItem.TimeStamp_PerfTime
    TimeBase = objItem.Frequency_PerfTime
Next
For i = 1 to 5
    Wscript.Sleep(1000)
    Set colItems = objWMIService.ExecQuery _
       ("Select * From Win32_PerfRawData_PerfOS_Processor Where Name = '0'")
    For Each objItem in colItems
        CounterValue2 = objItem.InterruptsPerSec
        TimeValue2 = objItem.TimeStamp_PerfTime
        If TimeValue2 - TimeValue1 = 0 Then
            Wscript.Echo "Interrupts Per Second = 0"
        Else
            intInterrupts = (CounterValue2 - CounterValue1) / _
                ( (TimeValue2 - TimeValue1) / TimeBase)
            Wscript.Echo "Interrupts Per Second = " & Int(intInterrupts)
        End if
        CounterValue1 = CounterValue2
        TimeValue1 = TimeValue2
    Next
Next
于 2014-04-14T17:16:31.850 に答える