Może i nie można mieszać tej flagi z GMEM_FIXED jednak moje pytanie jednak dotyczy czegość innego.
Po pierwsze to powinieneś używać GPTR
, które jest kombinacją GMEM_FIXED
i GMEM_ZEROINIT
. Po drugie to Twoje pytanie dotyczy właśnie tego, dostajesz NULL
z nieudanej alokacji i masz null pointer dereference. Człowieku, zabierasz się za assemblera i nie korzystasz z debuggera?
Poza tym "nie działa" to możesz powiedzieć żonie jak Ci Viagra nie pomoże, tu jest serwis techniczny, pisz konkretnie, "nie kompiluje się: {tutaj log kompilacji}", "otrzymuję wyjątek {tutaj informacje o wyjątku}". Krótka piłka: albo assembler albo bycie humanistą.
Ty człowieku jesteś psychol, zmocz głowę, uspokój się ;) Otóż nie masz racji, ponieważ nawet w poprzedniej konfiguracji flag program wykonywał się poprawnie tj. czytał 10 bajtów do zarezerwowanego bloku pamięci po czym dopisywał go do końca tego samego pliku. Przy poprawionej wersji również brak właściwych rezultatów. Co do pytania o debugger, tak używam go, tylko nie wiem jak miałby mi pomóc w tej sprawie, nie będę przecież analizował całej funkcji readfile. Reasumując, plik otwieram poprawnie, wskaźnik do bloku pamięci jest poprawny, a sposób w jaki chce odczytać dany bajt nie. Więc potrafisz pomóc czy tylko pokazywać swoją "wyższość" na każdym kroku?
P.S "nie działa" w odniesieniu do linijki mov al, BYTE PTR [ebx], miałem nadzieję, że domyślisz się i nie muszę pisać "w najmłodszym bajcie rejestru eax nie zostaje umieszczona wartość odpowiadająca pierwszemu bajtowi w pamięci o adresie pMemory...