| |
|
|
| Folgendes Einsteigerproblem:
Eine API erwartet (für die Rückgabe eines Strings) einen Speicherbereich, der mit Nullbytes gefüllt ist. Wie genau und wo deklariere ich diesen Speicherbereich (.data)?
Gruß
Andreas |
|
|
| |
|
|
|
| Ja, z.B. in der Datasection.
Und dann gibts da noch die Dim-Api - hieß die AllocMem |
|
|
| |
|
|
|
Frank Abbing | Bei kleineren Speichern bietet sich die Daten-Section an:
.data?
memory db 4096 dup(?) ;Reserviert 4096 Bytes Speicher memory2 dd 1024 dup(?) ;Reserviert auch 4096 Bytes Speicher
Bei größeren Speichern empfiehlt es sich, Speicher vom System reservieren zu lassen. Z.B. GlobalAlloc() oder HeapAlloc():
invoke GlobalAlloc,GMEM_FIXED+GMEM_ZEROINIT, anzahlbytes mov memory,eax ... invoke GlobalFree,memory |
|
|
| |
|
|
|
| [quote:4a1916bf22=Frank Abbing]Bei kleineren Speichern bietet sich die Daten-Section an:
.data?
memory db 4096 dup(?) ;Reserviert 4096 Bytes Speicher memory2 dd 1024 dup(?) ;Reserviert auch 4096 Bytes Speicher
[/quote:4a1916bf22] Vielen Dank, genau das wollte ich wissen.
[quote:4a1916bf22=Frank Abbing] Bei größeren Speichern empfiehlt es sich, Speicher vom System reservieren zu lassen. Z.B. GlobalAlloc() oder HeapAlloc():
invoke GlobalAlloc,GMEM_FIXED+GMEM_ZEROINIT, anzahlbytes mov memory,eax ... invoke GlobalFree,memory[/quote:4a1916bf22] Das kann ich in einem Treiber nicht verwenden, da diese Funktionen aus der KERNEL32 kommen. Ich glaube da aber schon was entsprechendes in der NTDLL gesehen zu haben. |
|
|
| |
|
|