CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Dec 2005
    Location
    algiers, Algeria
    Posts
    132

    VirtualProtect failed

    Hi all
    Code:
    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;
    I dont know why VirtualProtect Failed

  2. #2
    Join Date
    Dec 2005
    Location
    algiers, Algeria
    Posts
    132

    Re: VirtualProtect failed

    Thanks
    the solution is :
    lpvBase=VirtualAlloc(NULL,4096*4,MEM_RESERVE|MEM_COMMIT,PAGE_NOACCESS);

  3. #3
    Join Date
    Aug 1999
    Location
    <Classified>
    Posts
    6,882

    Re: VirtualProtect failed

    Yes, you must commit in order to use it, else there will be no actually usable memory.
    Regards,
    Ramkrishna Pawar

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured