关于GetPriorityClass函数参数及[in]属性的技术问询
关于GetPriorityClass函数的参数说明
DWORD GetPriorityClass( [in] HANDLE hProcess );
函数调用成功时,返回值为指定进程的优先级类。
一、[in] 关键字的含义
[in] 是Windows API文档中的参数方向标记,代表该参数是调用者传递给函数的输入参数:你需要在调用函数前准备好有效的进程句柄并传给函数,函数不会修改该参数的值。
二、如何填充hProcess参数
hProcess 是目标进程的句柄,需先获取合法的进程句柄再传递给函数,常见获取方式如下:
1. 获取当前进程的句柄
若要获取当前运行代码的进程优先级,可直接使用GetCurrentProcess()获取当前进程的伪句柄,无需额外权限:
HANDLE hCurrentProcess = GetCurrentProcess(); DWORD priority = GetPriorityClass(hCurrentProcess);
2. 获取其他进程的句柄
需先知晓目标进程的PID(进程ID),再通过OpenProcess()获取句柄,注意要申请合适的权限:
// 假设目标进程PID为1234 DWORD targetPID = 1234; // 申请PROCESS_QUERY_INFORMATION权限,足以获取优先级类 HANDLE hTargetProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, targetPID); if (hTargetProcess != NULL) { DWORD priority = GetPriorityClass(hTargetProcess); // 使用完毕后务必关闭句柄,避免资源泄漏 CloseHandle(hTargetProcess); }
注意事项
- 获取其他进程句柄时,当前进程需具备足够权限,否则
OpenProcess()会返回NULL。 - 通过
OpenProcess()获取的句柄,使用完成后必须调用CloseHandle()释放资源。
内容的提问来源于stack exchange,提问作者Felipe Olaya Ospina
相关产品推荐
相关产品推荐

