Hi all
I dont know why VirtualProtect FailedCode:SYSTEM_INFO System_Info; GetSystemInfo(&System_Info); printf("Page size :\t%d\n",System_Info.dwPageSize); printf("Allocation granularity :\t%d\n",System_Info.dwAllocationGranularity); printf("Processor type :\t%d\n",System_Info.dwProcessorType); printf("Maximum application adresse :\t%X\n",System_Info.lpMaximumApplicationAddress); printf("Minimum application adresse :\t%X\n",System_Info.lpMinimumApplicationAddress); MEMORYSTATUS MemoryStatus; GlobalMemoryStatus(&MemoryStatus); printf("AvailVirtual :\t%d\n",MemoryStatus.dwAvailVirtual); printf("TotalVirtual :\t%d\n",MemoryStatus.dwTotalVirtual); printf("AvailPhy :\t%d\t%f%\n",MemoryStatus.dwAvailPhys,floorf(((float)MemoryStatus.dwAvailPhys/(float)MemoryStatus.dwTotalPhys)*100)); printf("TotalPhy :\t%d\n",MemoryStatus.dwTotalPhys); VOID* lpvBase; lpvBase=VirtualAlloc(NULL,4096*4,MEM_RESERVE,PAGE_NOACCESS); if(lpvBase==NULL) { printf("Cant reserve virtual memory"); return 0; } printf("base :\t%x\n",lpvBase); MEMORY_BASIC_INFORMATION MemoryBasicInformation; DWORD OldProtect; if(!VirtualProtect(lpvBase,4096*4,PAGE_READONLY,&OldProtect)) { printf("\nVirtualProtec failed %d\n\n",GetLastError()); } if(VirtualQuery(lpvBase,&MemoryBasicInformation,sizeof(MEMORY_BASIC_INFORMATION))==0) { printf("Oooooooops"); } else { printf("State :\t%x\n",MemoryBasicInformation.State); printf("Allocation protect :\t%x\n",MemoryBasicInformation.AllocationProtect); printf("Allocation base :\t%x\n",MemoryBasicInformation.AllocationBase); } VirtualFree(lpvBase,0,MEM_RELEASE); printf("\ncontinue\n"); getchar(); return 0;




Reply With Quote