曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7754|回复: 0
打印 上一主题 下一主题

[进程,线程,模块] GetPriorityClass()/SetPriorityClass() -- 获取/设置指定进程优先级类

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-3-4 04:06:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GetPriorityClass() 和 SetPriorityClass() 函数原型分别如下:
[C++] 纯文本查看 复制代码
DWORD WINAPI GetPriorityClass(
  __in  HANDLE hProcess
);
BOOL WINAPI SetPriorityClass(
  __in  HANDLE hProcess,
  __in  DWORD dwPriorityClass
);

GetPriorityClass() 和 SetPriorityClass() 函数分别用来获取和设置指定进程的优先级类,前者只有一个参数,即指定进程的句柄;后者的第 1 个参数 hProcess 表示要设置进程的句柄,第 2 个参数 dwPriorityClass 是要设置的优先级类。

优先级类有:
ABOVE_NORMAL_PRIORITY_CLASS : 在正常优先级之上
BELOW_NORMAL_PRIORITY_CLASS : 在正常优先级之下
HIGH_PRIORITY_CLASS : 高优先级
IDLE_PRIORITY_CLASS : 空闲优先级
NORMAL_PRIORITY_CLASS : 正常优先级
REALTIME_PRIORITY_CLASS : 实时优先级

测试代码:
[C++] 纯文本查看 复制代码
#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    printf ("My PID is %d\n", GetCurrentProcessId());
    printf ("my Handle is %d\n", GetCurrentProcess());
    HANDLE hMyselfHandle = OpenProcess (PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId());

    printf ("Get my PID through My real handle: %d\n", GetProcessId(hMyselfHandle));

    printf ("Priority: 0x%.8x\n", GetPriorityClass(hMyselfHandle));


    SetPriorityClass(hMyselfHandle, HIGH_PRIORITY_CLASS);

    printf ("Priority: 0x%.8x\n", GetPriorityClass(hMyselfHandle));
    return 0;
}

运行输出:
My PID is 1092
my Handle is -1
Get my PID through My real handle: 1092
Priority: 0x00000020
Priority: 0x00000080
上面程序中,OpenProcess() 函数为当前进程创建了一个真实的句柄,GetCurrentProcess() 函数返回当前进程的一个虚句柄。

优先级类值 0x00000020 代表 NORMAL_PRIORITY_CLASS ; 被修改后变为高优先级类,即 HIGH_PRIORITY_CLASS  对应值为 0x00000080 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 02:33 , Processed in 0.078596 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表