Ich habe gerade angefangen zu lernen, die WinAPI und ich stolperte über verschiedene Variablen für Funktionen. Gerade jetzt kämpfe ich mit der ReadProcessMemory
. Der Code ist:C++ WinAPI ReadProcessMemory
ReadProcessMemory(phandle, (LPVOID)address, &value , sizeof(value), 0);
Jetzt verstehe ich, dass der erste Parameter ein Handle für den Prozess ist, aber ich verstehe nicht, warum der zweite Parameter (der Zeiger auf die Basisadresse) muss eine Lücke sein (LPVOID
) von eine Adresse.
In MSDN heißt es: Ein Zeiger auf die Basisadresse im angegebenen Prozess von dem gelesen werden soll. Bevor eine Datenübertragung stattfindet, überprüft das System, ob alle Daten in der Basisadresse und im Speicher der angegebenen Größe für den Lesezugriff zugänglich sind, und wenn die Funktion nicht zugänglich ist, schlägt die Funktion fehl.
Also warum muss es sein (LPVOID) Adresse und nicht nur Adresse für den zweiten Parameter?
LPVOID ist ein Zeiger auf eine Lücke. I.e. ein 'void *'. –
Warum denkst du davon aus, dass es erforderlich ist? – MSalters