Neo_Fr
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
10 janv. 2008 à 22:15
Salut,
Un exemple:
DWORD __stdcall ConvertFile2Hex(LPSTR InFile, LPSTR OutFile)
{
static const BYTE HexaTable[16] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 };
HANDLE hInFile, hOutFile;
BYTE* Buffer, *InBuff, *OutBuff;
DWORD i, br, bw, btw = 0;
hInFile = CreateFile(InFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if(hInFile == INVALID_HANDLE_VALUE) return 0;
hOutFile = CreateFile(OutFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if(hOutFile == INVALID_HANDLE_VALUE) goto Error;
Buffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, 0x300000); // 3 mo
if(!Buffer) goto Error;
InBuff = Buffer;
OutBuff = &InBuff[0x100000];
while(1)
{
if(!ReadFile(hInFile, Buffer, 0x100000, &br, 0)) goto Error;
if(!br) break;
i = 0;
while(1)
{
OutBuff[2*i] = HexaTable[(InBuff[i]>>4) & 0x0f];
OutBuff[2*i+1] = HexaTable[(InBuff[i]) & 0x0f];
if(i++ == br) break;
}
if(!WriteFile(hOutFile, OutBuff, (br*2), &bw, 0)) goto Error;
btw += bw;
}
Error:
if(Buffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, Buffer);
if(hOutFile) CloseHandle(hOutFile);
if(hInFile) CloseHandle(hInFile);
return btw; // Retourne le nb d'octet ecrit
}
Neo_Fr