Neo_Fr
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
19 juil. 2008 à 13:05
Salut,
En .Net j'en ai aucune idée mais en pure C ca donnerait ca:
DWORD __stdcall FileConcat(LPSTR lpszDstFile, LPSTR lpszSrcFile)
{
HANDLE hSrcFile, hDstFile;
DWORD dwRet = 1, dwFileSize, br, bw;
BYTE* lpBuffer;
hSrcFile = CreateFile(lpszSrcFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if(hSrcFile == INVALID_HANDLE_VALUE) return 1;
hDstFile = CreateFile(lpszDstFile, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
if(hDstFile == INVALID_HANDLE_VALUE) goto _Error;
lpBuffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, 0x100000); // 1mo
if(!lpBuffer) goto _Error;
dwFileSize = GetFileSize(hDstFile, 0);
SetFilePointer(hDstFile, dwFileSize, 0, FILE_BEGIN);
while(1)
{
if(!ReadFile(hSrcFile, lpBuffer, 0x100000, &br, 0)) goto _Error;
if(!br) break;
if(!WriteFile(hDstFile, lpBuffer, br, &bw, 0)) goto _Error;
}
dwRet = 0;
_Error:
if(lpBuffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpBuffer);
if(hDstFile) CloseHandle(hDstFile);
if(hSrcFile) CloseHandle(hSrcFile);
return dwRet;
}
Neo_Fr