Forum: PC-Programmierung GlobalAlloc(memBlockSize) , ab Adresse mit Daten befüllen


von Peter B. (funkheld)


Lesenswert?

Hallo, guten Tag.

 hSArray = GlobalAlloc(memBlockSize)
 ptrSarray = GlobalLock( hSArray )

Ich möchte bitte ab Adresse von memBlockSize mit ASM Daten dort 
reinbringen.
Es ist eine DLL.

Wie geht das bitte mit ASM?

Danke.

--------------------------
Function GlobalAlloc( dwBytes )
    CallDLL #kernel, "GlobalAlloc",  _GMEM_MOVEABLE As long, dwBytes As
    ulong, GlobalAlloc As long
End Function

Function GlobalLock( hMem )
    CallDLL #kernel, "GlobalLock", hMem As long, GlobalLock As long
End Function

Function GlobalFree( hMem )
    CallDLL #kernel, "GlobalFree", hMem As ulong, GlobalFree As long
End Function
---------------------------

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Peter B. schrieb:
> Ich möchte bitte ab Adresse von memBlockSize

memBlockSize ist keine Adresse, sondern eine Größenangabe.

Warum willst Du ausgerechnet mit Assembler irgendwas irgendwo 
"reinbringen", wenn Du noch nicht mal verstehst, was die Funktionen da 
tun?

von Peter B. (funkheld)


Lesenswert?

Natürlich ist das nicht die Adresse.
Es geht um die Adresse vom Speicher.

Warum die Gegenfrage?
Wenn du eine Toilette suchst bei mir dann Frage ich auch nicht : dünne 
Soße oder harte Sachen auf meine Toilette.
Ich helfe dann Einfach.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Peter B. schrieb:
> Es geht um die Adresse vom Speicher.

Ja? Und? Wenn Du verstehen würdest, was die beiden Funktionen 
GlobalAlloc und GlobalLock machen, dann müsstest Du diese Frage nicht 
stellen.

Du kannst ja mal in die Dokumentation reinsehen:

https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc

und

https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-locallock

Wie jemand, der das nicht von selbst auf die Reihe bekommt, dann 
irgendwas "mit ASM dort reinbringen" will, ist mir wirklich vollkommen 
schleierhaft.

von Foobar (asdfasd)


Lesenswert?

funkheld schrieb:
> Warum die Gegenfrage?
> Wenn du eine Toilette suchst bei mir dann Frage ich auch nicht : dünne
> Soße oder harte Sachen auf meine Toilette.

Selbst wenn ich dabei ne knatternde Kettensäge in der Hand habe?

Was du fragst klingt so abstrus, da kann man nur Antworten "ergibt 
keinen Sinn".  Und nicht alle haben Lust dazu, dir die Salamischeiben 
einzeln aus der Nase zu ziehen, insb wenn sie den Eindruck haben, dass 
du das Problem/die Antworten eh nicht verstehen würdest.

Die Funktion, um eine DLL in den Speicher zu bekommen, heißt 
LoadLibrary.  Wenn du die nachprogrammieren willst, schau in den 
Quellcode von Wine.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.