将过程亲和力设置为特定过程

Setting process affinity to a specific process

本文关键字:过程 设置 亲和力      更新时间:2023-10-16

我想将过程亲和力设置为特定过程。

喜欢:我有一个称为" word.exe"的过程:2045我如何设置流程亲和力?

我在网上搜索,但找不到太多。我只找到了getCurrentProcess((,但它仅设置了当前过程的过程亲和力。

int main()
{   
    DWORD processID = GetCurrentProcessId();
    HANDLE process = GetCurrentProcess();
    DWORD_PTR processAffinityMask = 1;
    BOOL success = SetProcessAffinityMask(process, processAffinityMask);
    SetPriorityClass(GetCurrentProcess(), THREAD_PRIORITY_TIME_CRITICAL);
    cout << success << " " << processID << endl; //returns 1 if everything goes okay
}

编辑我的意思是:有一个替代getCurrentProcess((的替代品,而不是设置与当前过程的亲和力,而是将亲和力设置为我想要的特定过程?

我可以使用另一个功能更改GetCurrentProcces((吗? 是的。

#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
HANDLE GetProcessHandleByName(const std::wstring& processName)
{
    HANDLE hProcess = NULL;
    PROCESSENTRY32 processInfo;
    processInfo.dwSize = sizeof(processInfo);
    HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if (processesSnapshot == INVALID_HANDLE_VALUE) {
        return 0;
    }
    Process32First(processesSnapshot, &processInfo);
    if (!processName.compare(processInfo.szExeFile))
    {
        CloseHandle(processesSnapshot);
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
        return hProcess;
    }
    while (Process32Next(processesSnapshot, &processInfo))
    {
        if (!processName.compare(processInfo.szExeFile))
        {
            CloseHandle(processesSnapshot);
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processInfo.th32ProcessID);
            return hProcess;
        }
    }
    CloseHandle(processesSnapshot);
    return hProcess;
}

用法:

HANDLE hProcess = GetProcessHandleByName(L"word.exe");

btw:在SetPriorityClass中,dwPriorityClass中没有参数THREAD_PRIORITY_TIME_CRITICAL,也许您要使用SetThreadPriority