Я искал в Интернете об этой проблеме, и мне кажется, это действительно странно. В моей программе я получаю имя компьютера следующего кода:GetComputerNameW вызывает переполнение буфера в Windows 10
TCHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
memset(ComputerName, 0, sizeof(ComputerName));
DWORD dwNameLenght = MAX_COMPUTERNAME_LENGTH;
GetComputerNameW(ComputerName, &dwNameLenght);
Я проверил его с именем компьютера (ÆÆØ
), который содержит символы Юникода и она отлично работает (хотя GetLastError()
возвращает код 203). Если имя DESKTOP-IVHSIQD
, имя компьютера не получено, и GetLastError()
возвращает 111, который называется переполнением буфера. Операционная система - Windows 10 x64.
Определен ли UNICODE? И в этом случае, если вы собираетесь использовать опцию с макросами и использовать 'GetComputerNameW' напрямую, зачем использовать' TCHAR' вместо 'wchar_t'? –