当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

如何获得CPU使用率

      NT/2000方法:

    #include <windows.h>
    #include <conio.h>
    #include <stdio.h>

    #define SystemBasicInformation       0
    #define SystemPerformanceInformation 2
    #define SystemTimeInformation        3

    #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))

    typedef strUCt
    {
        DWord   dwUnknown1;
        ULONG   uKeMaximumIncrement;
        ULONG   uPageSize;
        ULONG   uMmNumberOfPhysicalPages;
        ULONG   uMmLowestPhysicalPage;
        ULONG   uMmHighestPhysicalPage;
        ULONG   uAllocationGranularity;
        PVOID   pLowestUserAddress;
        PVOID   pMmHighestUserAddress;
        ULONG   uKeActiveProcessors;
        BYTE    bKeNumberProcessors;
        BYTE    bUnknown2;
        WORD    wUnknown3;
    } SYSTEM_BASIC_INFORMATION;

    typedef struct
    {
        LARGE_INTEGER   liIdleTime;
        DWORD           dwSpare[76];
    } SYSTEM_PERFORMANCE_INFORMATION;


    typedef struct
    {
        LARGE_INTEGER liKeBootTime;
        LARGE_INTEGER liKeSystemTime;
        LARGE_INTEGER liEXPTimeZoneBias;
        ULONG         uCurrentTimeZoneId;
        DWORD         dwReserved;
    } SYSTEM_TIME_INFORMATION;


    // ntdll!NtQuerySystemInformation (NT specific!)
    //
    // The function copies the system information of the
    // specified type into a buffer
    //
    // NTSYSAPI
    // NTSTATUS
    // NTAPI
    // NtQuerySystemInformation(
    //    IN UINT SystemInformationClass,    // information type
    //    OUT PVOID SystemInformation,       // pointer to buffer
    //    IN ULONG SystemInformationLength,  // buffer size in bytes
    //    OUT PULONG ReturnLength OPTIONAL   // pointer to a 32-bit
    //                                       // variable that receives
    //                                       // the number of bytes
    //                                       // written to the buffer


 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接