Hi. Im calling the VirtualAlloc() function and according to material i've read about this function, passing it a 0 for the address is supposed to allow windows to pick an address. However, this never works. The only way i can successfully reserve a region is to explicitly pass in an address. Any ideas what i'm doing wrong?
Any help would be appreciated.
Thanks
-Mike
------------------
Code:
#COMPILE EXE #DIM ALL #REGISTER NONE #INCLUDE "win32api.inc" %PAGE_SIZE = 4096 'on Alphas, the page size is 8196 PB code wont run on Alpha cpu's will it? %PAGE_NOACCESS = &H01 %PAGE_READONLY = &H02 %PAGE_READWRITE = &H04 %PAGE_WRITECOPY = &H08 %PAGE_EXECUTE = &H10 %PAGE_EXECUTE_READ = &H20 %PAGE_EXECUTE_READWRITE =&H40 %PAGE_EXECUTE_WRITECOPY = &H80 %PAGE_GUARD = &H100 %PAGE_NOCACHE = &H200 %PAGE_WRITECOMBINE = &H400 %MEM_COMMIT = &H1000 %MEM_RESERVE = &H2000 %MEM_DECOMMIT = &H4000 %MEM_RELEASE = &H8000 %MEM_FREE = &H10000 %MEM_PRIVATE = &H20000 %MEM_MAPPED = &H40000 %MEM_RESET = &H80000 %MEM_TOP_DOWN = &H100000 %MEM_4MB_PAGES = &H80000000 %SEC_FILE = &H800000 %SEC_IMAGE = &H1000000 %SEC_VLM = &H2000000 %SEC_RESERVE = &H4000000 %SEC_COMMIT = &H8000000 %SEC_NOCACHE = &H10000000 %MEM_IMAGE = &H1000000 'SEC_IMAGE FUNCTION PBMAIN() DIM lpAddress AS LONG DIM lRet AS LONG lpAddress = %NULL ' passing NULL is supposed to let windows pick an address lRet = VirtualAlloc(lpAddress, %PAGE_SIZE, %MEM_RESERVE, %PAGE_READWRITE) MSGBOX STR$(lpAddress) ' always returns 0 Why? lpAddress = &00400000 lRet = VirtualAlloc(lpAddress, %PAGE_SIZE, %MEM_RESERVE, %PAGE_READWRITE) MSGBOX STR$(lpAddress) ' this returns a valid address lRet = VirtualFree (lpAddress, 0, %MEM_RELEASE) END FUNCTION
Any help would be appreciated.
Thanks
-Mike
------------------
Comment