WinAPI: Не получается UpdateResource (BINARY)

Павел_12
Дата: 26.10.2014 10:37:11
Помогите пожалуйста разобраться с кодом, найти в гугле где именно с 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;         // &#238;&#239;&#232;&#241;&#224;&#242;&#229;&#235;&#252;/&#243;&#234;&#224;&#231;&#224;&#242;&#229;&#235;&#252; &#237;&#224; &#232;&#237;&#244;-&#254; &#240;&#229;&#241;-&#241;&#224; &#226; hExe 
		HANDLE hUpdateRes;  // &#238;&#239;&#232;&#241;&#224;&#242;&#229;&#235;&#252; &#238;&#225;&#237;&#238;&#226;&#235;&#255;&#229;&#236;&#238;&#227;&#238; &#240;&#229;&#241;&#243;&#240;&#241;&#224;
		char *lpResLock;    // &#243;&#234;&#224;&#231;&#224;&#242;&#229;&#235;&#252; &#237;&#224; &#228;&#224;&#237;&#237;&#251;&#229; &#240;&#229;&#241;&#243;&#240;&#241;&#224;
		BOOL result;		
			byte* cryptohash;
		
		// &#206;&#242;&#234;&#240;&#251;&#242;&#232;&#229; &#244;&#224;&#233;&#235;&#224; &#226; &#234;&#238;&#242;&#238;&#240;&#251;&#233; &#237;&#243;&#230;&#237;&#238; &#228;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#240;&#229;&#241;&#243;&#240;&#241; &#228;&#232;&#224;&#235;&#238;&#227;&#238;&#226;&#238;&#227;&#238; &#238;&#234;&#237;&#224;.
		hUpdateRes = BeginUpdateResource(toFilename, FALSE); 		
		if (hUpdateRes == NULL) 
		{ 
			printf("Could not open file for writing."); 
			exit(5);
		} 
		 
		// &#196;&#238;&#225;&#224;&#226;&#235;&#229;&#237;&#232;&#229; &#240;&#229;&#241;&#243;&#240;&#241;&#224; &#226; &#241;&#239;&#232;&#241;&#238;&#234; &#238;&#225;&#237;&#238;&#226;&#235;&#229;&#237;&#232;&#255;. 
		result = UpdateResource(hUpdateRes,       // &#238;&#239;&#232;&#241;&#224;&#242;&#229;&#235;&#252; &#228;&#235;&#255; &#238;&#225;&#237;&#238;&#226;&#235;&#229;&#237;&#232;&#255;
			 "BINARY",//RT_RCDATA,                   // &#231;&#224;&#236;&#229;&#237;&#232;&#242;&#252; &#225;&#232;&#237;&#224;&#240;&#237;&#251;&#233; &#240;&#229;&#241;&#243;&#240;&#241;						
			 MAKEINTRESOURCE(2),                  // &#232;&#236;&#255; &#240;&#229;&#241;&#243;&#240;&#241;&#224;
			 MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),  // &#237;&#229;&#233;&#242;&#240;&#224;&#235;&#252;&#237;&#251;&#233; &#255;&#231;&#251;&#234;
			 load((char*)filename, cryptohash),//lpResLock,                   // &#243;&#234;&#224;&#231;&#224;&#242;&#229;&#235;&#252; &#237;&#224; &#240;&#229;&#241;&#243;&#240;&#241; 			 
			 MAXHASHSTRINGLENGTH); // &#240;&#224;&#231;&#236;&#229;&#240; &#240;&#229;&#241;&#243;&#240;&#241;&#224;.
		printf(" filename inside: %s\n",  toFilename);	 
		if (result == FALSE) 
		{ 
			printf("Could not update resource.");
			exit(5);
		} 
		 
		// &#199;&#224;&#239;&#232;&#241;&#252; &#232;&#231;&#236;&#229;&#237;&#229;&#237;&#232;&#233; &#226; FOOT.EXE &#232; &#229;&#227;&#238; &#231;&#224;&#234;&#240;&#251;&#242;&#232;&#229;. 
		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, заранее спасибо.
Dimitry Sibiryakov
Дата: 26.10.2014 13:45:44

Павел_12
load((char*)filename, cryptohash)

Выделение памяти под cryptohash где?..

Posted via ActualForum NNTP Server 1.5

Павел_12
Дата: 26.10.2014 14:30:09
Dimitry Sibiryakov
Павел_12
load((char*)filename, cryptohash)

Выделение памяти под cryptohash где?..

Спасибо, в следующий раз я обязательно буду внимательнее.