Posted By: oliver2s
Invalid memory area STR - 05/16/12 15:14
Hi,
I have the following code to get My Documents folder:
The code works (almost) well, it gives me the My Documents folder, but I get the error message "invalid memory area STR" in this line:
But I don't have any idea what's wrong.
Does anyone have an idea?
I have the following code to get My Documents folder:
Code:
#include <acknex.h>; #include <windows.h>; long __stdcall RegOpenKey(long hKey, char* lpSubKey, long phkResult); #define PRAGMA_API RegOpenKey;advapi32!RegOpenKeyA long __stdcall RegQueryValueEx(long hKey, char* lpValueName, long lpReserved, long lpType, long lpData, long lpcbData); #define PRAGMA_API RegQueryValueEx;advapi32!RegQueryValueExA long __stdcall RegCloseKey(long hKey); #define PRAGMA_API RegCloseKey;advapi32!RegCloseKey var reg_get_STRING(long HKEY, char* KEY, char* VALUE, STRING* *DATA) { long regPtr=0, DataType=0, DataLen=999; if(RegOpenKey(HKEY, KEY, ®Ptr)) return(false); if((RegQueryValueEx(regPtr,VALUE,0,&DataType,NULL,&DataLen))||(DataType!=1)) { RegCloseKey(regPtr); return(false); } STRING* tmpStr = str_create(""); str_cat_num(tmpStr, "\#%.0f", DataLen); if(!*DATA) *DATA = str_create(""); str_cpy(*DATA, _chr(tmpStr)); str_remove(tmpStr); //!!!!=>>following line causes error "invalid memory area STR"<<=!!!! RegQueryValueEx(regPtr,VALUE,0,0,_chr(*DATA),&DataLen); RegCloseKey(regPtr); return(true); } void getMyDocuments() { STRING* tmpStr = str_create(""); reg_get_STRING(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Personal", tmpStr); str_cat(tmpStr, "\\My Game"); str_cpy(save_dir, tmpStr); CreateDirectory(_chr(tmpStr),NULL); ptr_remove(tmpStr); error(save_dir); } void main() { warn_level=6; getMyDocuments(); }
The code works (almost) well, it gives me the My Documents folder, but I get the error message "invalid memory area STR" in this line:
Code:
RegQueryValueEx(regPtr,VALUE,0,0,_chr(*DATA),&DataLen);
But I don't have any idea what's wrong.
Does anyone have an idea?