использовать функцию ReadFile(), чтобы получить несколько байт из упреждающей файлаФорматирование байтов массива
BYTE ReadBuffer[24];
for(i=0; i < 24; (i++))
{
printf("%02X", *(ReadBuffer+i));
}
, если я использую% 02X я получить такой же результат, как мой редактор шестнадцатеричных:
43 00 4F 00 4E 00 48 00 4F 00 53 00 54 00 2E 00 45 00 58 00 45 00 00 00
если Я использую% C:
C O N H O S T . E X E
это, кажется, UTF-16LE и я хочу, как результат conhost.exe (без пробелов ...) с помощью WI NAPI только
я пытаюсь использовать WideCharToMultiByte, но он не работает ..
CHAR AnsiPath[MAX_PATH]
WideCharToMultiByte(CP_ACP, 0, (PWCHAR)Buffer, -1, AnsiPath, sizeof(AnsiPath), NULL, NULL)
кто-то может объяснить мне, где я не в состоянии? благодаря
здесь полный код
int main(void)
{
HANDLE hFile;
DWORD dwBytesRead = 0;
BYTE ReadBuffer[10266];
DWORD nNumberOfBytesToRead = 10266;
LPCWSTR fname = L"C:\\Windows\\Prefetch\\CONHOST.EXE-3218E401.pf";
hFile = CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if (!ReadFile(hFile, ReadBuffer, nNumberOfBytesToRead, &dwBytesRead, NULL))
{
printf("Terminal failure: Unable to read from file.\n GetLastError=%08x\n", GetLastError());
CloseHandle(hFile);
}
printf("Data read from %s (%d bytes): \n", fname, dwBytesRead);
wprintf(L"%ld\n", ReadBuffer);
int i;
for(i=16; i < 40; i++)
{
printf("%C ", *(ReadBuffer+i));
}
char AnsiPath[MAX_PATH];
int result = WideCharToMultiByte(CP_UTF8, 0, (PWCHAR)ReadBuffer, -1, AnsiPath, 0,0,0);
printf("\nResult WideCharToMultiByte : %d\n", result);
printf("\nString : %s \n",AnsiPath);
CloseHandle(hFile);
system("pause");
return 0;
}
результат:
Data read from C (9068 bytes):
3199640
C O N H O S T . E X E
Result WideCharToMultiByte : 2
String : ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠(
Appuyez sur une touche pour continuer...
«Это не работает». Могу вас заверить, что «WideCharToMultiByte» отлично работает. Ваш код не работает. Опишите, как это происходит. Я также отмечаю, что вы не можете проверить возвращаемое значение 'WideCharToMultiByte'. Это всегда ошибка. –
вы правы, я забыл сказать, что WideCharToMultiByte вернет мне 2 .. я думаю, что это неправильный размер – Occulta
Что делает этот актер? Вам нужно сделать это следующим образом: '(PWCHAR) & ReadBuffer'? Я не знаю, что такое «Буфер». Он появляется только при вызове 'WideCharToMultiByte'. Если бы вы предоставили полную программу, нам не пришлось бы проходить этот болезненный процесс. –