Hallo zusammen
ich hab mir eine Funktion geschrieben, die mir Registry Einträge ausliest. Jedoch bekomme ich als Warnung:
warning C4172: returning address of local variable or temporary
Ich weiß leider nicht wo ich anfangen soll das Programm zu ändern damit ich auch sicher meinen Wert bekomme und nicht die Adresse. Ich hoffe mir kann einer auf die Sprünge helfen?
Funktionsaufruf:
Funktion:
Gruß
mrkorn
ich hab mir eine Funktion geschrieben, die mir Registry Einträge ausliest. Jedoch bekomme ich als Warnung:
warning C4172: returning address of local variable or temporary
Ich weiß leider nicht wo ich anfangen soll das Programm zu ändern damit ich auch sicher meinen Wert bekomme und nicht die Adresse. Ich hoffe mir kann einer auf die Sprünge helfen?
Funktionsaufruf:
Code:
char * DNS_Reg = RegistryLesen(HKEY_LOCAL_MACHINE, REG_MULTI_SZ, L"Comm\\DM90001\\Parms\\TcpIp", L"DNS");
char * DNS_String = DNS_Reg;
printf("UEBRGEBEN DNS: %s\r\n",DNS_String);
Funktion:
Code:
char * RegistryLesen(HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
{
HKEY m_hkey = MainKey;
LPCWSTR lpstrKey = Subkey;
LPCWSTR lpstrKeyValue = Value;
DWORD dwType = Reg_Type;
DWORD dwSize = MAX_PATH;
char value[MAX_PATH];
RegOpenKeyEx(m_hkey,lpstrKey,0,KEY_READ, &m_hkey) ;
int i=0;
int iLastError=0;
char DaValue[MAX_PATH]="";
char DaValue2[MAX_PATH]="";
char * DaValuePart;
int NullCounter=0;
int EntryCounter=0;
do
{
LPTSTR cValueName;
DWORD dwValueName = 256;
DWORD ValueType = 0;
BYTE cValueData[256] = "\0";
DWORD dwValueData = 256;
iLastError = RegEnumValue(m_hkey,i,cValueName,&dwValueName,0,&ValueType,cValueData,&dwValueData);
//if(ValueType == REG_SZ)
// printf("CVALUE: %s\r\n",cValueName);
++i;
}while(iLastError!=ERROR_NO_MORE_ITEMS);
if (RegQueryValueEx(m_hkey, lpstrKeyValue, 0, &dwType,(LPBYTE)value,&dwSize)== ERROR_SUCCESS)
{
for(int s=0; s<(int)dwSize; s=s+2)
{
if (value[s]=='\0')
{
NullCounter++;
DaValuePart = "";
}
else
{
DaValuePart = value+s;
NullCounter=0;
}
if (EntryCounter==0)
{
strcat(DaValue, DaValuePart);
}
else if (EntryCounter==1)
{
strcat(DaValue2, DaValuePart);
}
if (NullCounter==1)
{
NullCounter=0;
EntryCounter++;
}
}
}
RegCloseKey(m_hkey);
if (strlen(DaValue2)>=7)
{
strcat(DaValue, "-");
strcat(DaValue, DaValue2);
}
return DaValue;
}
Gruß
mrkorn