HINTERNET frage



  • Habe mir eine kleine Funktion gebastelt mit der WinInet Library die einen Aufruf auf einer Seite tätigen soll. Klappt alles wunderbar nur jedes mal wenn ich die Funktion aufrufe, benötigt der Prozess knapp 0.004kb vom Arbeitsspeicher mehr. Das kann man im Ressourcenmonitor ganz einfach erkennen wenn man die Funktion in einer Endlosschleife laufen lässt in einem bestimmten Abstand.

    Weiß jemand woran das liegen könnte? Hier mal meine Funktion:

    DWORD GetData(std::string useragent, std::string site, std::string& rbuf)
    {
    	HINTERNET hOpen = InternetOpen(useragent.c_str(), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    
    	if(hOpen != NULL)
    	{
    		HINTERNET hOpenUrl = InternetOpenUrl(hOpen, site.c_str(), NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, NULL);
    		if(hOpenUrl == NULL)
    		{
    			//InternetOpenUrl fehlgeschlagen
    			InternetCloseHandle(hOpen);
    			InternetCloseHandle(hOpenUrl);
    
    			return GetLastError();
    		}
    		else
    		{
    			//String leeren
    			rbuf.clear();
    
    			//Daten auslesen
    			char *response = new char[260];
    			DWORD iread = 0;
    
    			while(InternetReadFile(hOpenUrl, response, 260, &iread))
    			{
    				if(iread == 0)
    					break;
    
    				rbuf += response;
    				response[iread - 1] = 0;
    			}
    
    			//Erfolg
    			InternetCloseHandle(hOpenUrl);
    			InternetCloseHandle(hOpen);
    
    			delete[] response;
    			return 0;
    		}
    	}
    
    	//InternetOpen fehlgeschlagen
    	InternetCloseHandle(hOpen);
    	return GetLastError();
    }
    

Anmelden zum Antworten