Как получать процесс по его имени в WinAPI? C++
При попытке получить доступ к процессу я столкнулся с неожиданной проблемой. Я написал такой код:
PROCESSENTRY32 entry{};
entry.dwSize = sizeof(entry);
Process32First(this->snapshot, &entry);
if (!process_name.compare(entry.szExeFile)) {
return { entry };
}
В целом, все выглядит логично, но возникла неожиданная проблема. PROCESSENTRY32::szExeFile по документации WinAPI - это массив CHAR[260]. И он должен сравниваться с std::string при помощи метода compare(). Однако компилятор начал ругаться и я обнаружил, что на самом деле у меня это поле - это тип WCHAR[260]. А WCHAR в свою очередь псевдоним для unsigned short. Естественно unsigned short не мог сравниваться в методе compare, что и вызывало ошибку отсутствия шаблона с данным аргументом.
Напрашивается вопрос: почему у меня WinAPI не соответствует документации и что делать? Писать костыли для сравнения с unsigned short? Или же это новая версия WinAPI, которая еще не обновилась в документации и есть другой способ получения процесса по имени?