WinAPI Anfänger Fehler



  • Hi,
    Ich musste heute mal wieder etwas für Windows machen(ansonsten als für Linux).
    Habe von der WinAPI nicht so viel Ahnunh.
    Es geht hierbei um Speicher Manipulation:

    #include<windows.h>
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main(int argc, char *argv[])
    {
        if(argc == 1) {
         return 1;
        }
        PROCESS_INFORMATION  pi;
    	if(CreateProcess(0,(LPTSTR)argv[1],0,0,false,0,0,0,0,&pi))
    	{
    		cout << "Program not found!" << endl;
    		return 1;
    	}
    	HANDLE hGame = OpenProcess(PROCESS_ALL_ACCESS,false,pi.dwProcessId);
    	int value;
    	while(1)
    	{
    		//blablabla
    	}
    	CloseHandle(&pi);
    	return 0;
    }
    

    Jedoch stürtzt das Programm bei CreateProcess ab.
    Nur ich weiß nicht warum, fehlermeldung gibts keine.

    MFG ReduX



  • Der cast zu LPTSTR wird im unicode modus nicht funktionieren und außerdem muss die process_info struct initialisiert werden(cbSize).



  • Und ein Zeiger auf eine Struktur vom Typ STARTUPINFO fehlt auch.



  • Danke für eure Antworten.
    Funktioniert nun.

    Weiß von euch jemand ob es eine Funktion gibt mit der man auslesen kann welche Speicherbereich von dem Programm in benutzung sind?

    MFG ReduX



  • VirtualQuery, NtQuerySystemInformation, usw.
    🙂



  • Codeproject, Forumsuche, ...



  • Hi,
    Also VirtualQueryEx scheint das richtige für mich zu sein.
    Die Funktion schreibt ja daten in den MEMORY_BASIC_INFORMATION struct.
    Nur wie gehe ich mit denen Daten um? Bzw. ich verstehe diese ganzen Dateitypen nicht wie z.B. PVOID gibt es unter Linux nicht.

    MFG ReduX



  • Wie Du damit umgehst, steht in der MSDN. PVOID ist das, wonach es sich anhört: Ein "Pointer to void", also nicht mehr als: void*.

    Das bekommste (entsprechende IDE-Funktionalität vorrausgesetzt) auch heraus, mit nem Rechtsklick auf das Schlüsselwort und dann auch "Gehe zu Definition..." 😉 .


Anmelden zum Antworten