Версии W и A означают «широкий» и «ANSI». В прошлом они создавали разные функции, структуры и типы для строк ANSI и Unicode. Для целей этого ответа unicode - это widechar, который составляет 2 байта на символ, а ANSI равен 1 байту на символ (но на самом деле это сложнее). Предоставляя оба типа, разработчик может использовать то, что он хочет, но сегодня стандартным является использование юникода.
Если вы посмотрите на заголовочный файл ToolHelp32, он включает в себя как A, так и W версии версий и функций. Если вы не находите их, вы не смотрите достаточно внимательно, выполните явный поиск по идентификаторам, и вы их найдете. Если вы просто выполняете «определение представления», вы найдете макросы #ifdef. Если вы все еще не можете их найти, измените свой набор символов в проекте Visual Studio и проверьте снова.
Из-за того, что широкие массивы символов в два раза больше, выравнивание структуры будет неправильным, если вы не используете правильный типы. Позвольте макросам разрешить их для вас, установив правильный набор символов и используя PROCESSENTRY32 вместо указания A или W, это предпочтительный метод. Если честно, некоторые API лучше использовать версию ANSI, но это то, чему вы научитесь с опытом и должны будете принять собственное решение.
Здесь - отличная статья на топи c наборов символов / кодировка