(TCHAR*)"Process.exe"
не является допустимым приведением типа.Он будет «работать», когда для charset проекта установлено значение ANSI / MBCS, но он будет выдавать мусор, если для charset установлено значение Unicode.
Использование TEXT("Process.exe")
является правильным способом использования строкового литерала TCHAR
символов.
GetBaseAddressByName(aProcs[i], TEXT("Process.exe"));
Однако вместо этого вам необходимо изменить параметр pN
на const TCHAR *
(или LPCTSTR
):
void GetBaseAddressByName(DWORD pID, const TCHAR *pN);
void GetBaseAddressByName(DWORD pID, LPCTSTR pN);
Строковый литерал - это константные данные, и вы не можете передать указатель на константные данные там, где ожидается указатель на неконстантные данные (без приведения const
к const_cast
).Вот почему вы по-прежнему получали ошибки при попытке использовать макросы TEXT()
/ _T()
.