text: // Licensed to the .NET Foundation under one or more agreements.
  // The .NET Foundation licenses this file to you under the MIT license.
  // See the LICENSE file in the project root for more information.
  
  /*=============================================================
  **
  ** Source:  virtualalloc.c
  **
  ** Purpose: Positive test the VirtualAlloc API.
  **          Call VirtualAlloc with MEM_COMMIT|MEM_TOP_DOWN allocation type
  **          and PAGE_READONLY access protection
  
  **
  **============================================================*/
  #include <palsuite.h>
  
  int __cdecl main(int argc, char *argv[])
  {
      int err;
      LPVOID lpVirtualAddress;
  
      //Initialize the PAL environment
      err = PAL_Initialize(argc, argv);
      if(0 != err)
      {
          ExitProcess(FAIL);
      }
      
      //Allocate the physical storage in memory or in the paging file on disk 
      lpVirtualAddress = VirtualAlloc(NULL,//system determine where to allocate the region
              1024,            //specify the size
              MEM_COMMIT|MEM_TOP_DOWN,      //allocation type
              PAGE_READONLY);  //access protection
      if(NULL == lpVirtualAddress)
      {
          Fail("\nFailed to call VirtualAlloc API!\n");
      }
  
      //decommit the specified region
      err = VirtualFree(lpVirtualAddress,1024,MEM_DECOMMIT);
      if(0 == err)
      {
          Fail("\nFailed to call VirtualFree API!\n");
      }
  
      PAL_Terminate();
      return PASS;
  }
  