Помогите пожалуйста разобраться с кодом, найти в гугле где именно с BINARY перезапись идёт не получилось, нужно перезаписать в ресурсе бинарные данные. Вот что я сделал, но это выдаёт ошибку.
byte* load(char* filename = "serial.txt", byte* cryptohash)
{
FILE * pFile = fopen (filename,"rb");
int i = fread(cryptohash, sizeof(byte), MAXHASHSTRINGLENGTH, pFile);
if(i<MAXHASHSTRINGLENGTH){exit(4);}
fclose (pFile);
return cryptohash;
};
bool store(char* filename, char* toFilename)
{
HRSRC hRes; // îïèñàòåëü/óêàçàòåëü íà èíô-þ ðåñ-ñà â hExe
HANDLE hUpdateRes; // îïèñàòåëü îáíîâëÿåìîãî ðåñóðñà
char *lpResLock; // óêàçàòåëü íà äàííûå ðåñóðñà
BOOL result;
byte* cryptohash;
// Îòêðûòèå ôàéëà â êîòîðûé íóæíî äîáàâèòü ðåñóðñ äèàëîãîâîãî îêíà.
hUpdateRes = BeginUpdateResource(toFilename, FALSE);
if (hUpdateRes == NULL)
{
printf("Could not open file for writing.");
exit(5);
}
// Äîáàâëåíèå ðåñóðñà â ñïèñîê îáíîâëåíèÿ.
result = UpdateResource(hUpdateRes, // îïèñàòåëü äëÿ îáíîâëåíèÿ
"BINARY",//RT_RCDATA, // çàìåíèòü áèíàðíûé ðåñóðñ
MAKEINTRESOURCE(2), // èìÿ ðåñóðñà
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), // íåéòðàëüíûé ÿçûê
load((char*)filename, cryptohash),//lpResLock, // óêàçàòåëü íà ðåñóðñ
MAXHASHSTRINGLENGTH); // ðàçìåð ðåñóðñà.
printf(" filename inside: %s\n", toFilename);
if (result == FALSE)
{
printf("Could not update resource.");
exit(5);
}
// Çàïèñü èçìåíåíèé â FOOT.EXE è åãî çàêðûòèå.
if (!EndUpdateResource(hUpdateRes, FALSE))
{
printf("Could not write changes to file.");
exit(5);
}
return true;
};
Ресурс:
#define IDR_VERSION1 1
#define IDR_RCDATA1 2
LANGUAGE 25,1
IDR_ICON ICON "icon.ico"
IDR_VERSION1 VERSIONINFO
FILEVERSION 0,0,0,1
PRODUCTVERSION 0,0,0,1
FILEOS 0x00000004
FILETYPE 0x00000001
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041904E3"
BEGIN
VALUE "FileVersion", "0.0.0.1\0"
VALUE "ProductVersion", "0.0.0.1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0419, 0x04E3
END
END
IDR_RCDATA1 BINARY "main.rc"
MinGW Widows7x64, заранее спасибо.