If your winxp system has more than 4GB memory, and you want to use it. You can add /PAE flag to the booting system item of your boot.ini file. If you want to allocate more than 2GB memory for your process, you can try adding /3GB to your boot.ini file. But this flag doesn’t gaurantee you can use 3GB memory in your application, because the system may not have enough virtural address space for you, for example, your machine has installed lots of I/O cards. If you do install many I/O cards, and still want to use more than 2GB memory, you can use AWE function calls of windows to do so, like AllocateUserPhysicalPages, MapUserPhysicalPages, MapUserPhysicalPagesScatter.
Originally posted by Windows Internals
To allow a 32-bit process to allocate and access more physical memory than can be represented in its limited address space, Windows provides a set of functions called Address Windowing Extensions (AWE). For example, on a Windows 2000 Advanced Server system with 8 GB of physical memory, a database server application could use AWE to allocate and use perhaps 6 GB of memory as a database cache.
Also, when [data] execution protection [(DEP)] is enabled on 32-bit Windows, the system automatically boots in PAE mode (automatically selecting the PAE kernel, \Windows\ System32\Ntkrnlpa.exe). For a description of PAE, see the section “Physical Address Extension (PAE).”