Your use of the API is slightly off:
HANDLE WINAPI HeapCreate(
DWORD flOptions,
SIZE_T dwInitialSize,
SIZE_T dwMaximumSize );
Note that the second parameter to this call is the heap's initial size, not its maximum size. When you specify 0 for the maximum size, Windows will try to commit new memory pages for the heap once you've exhausted the initial pool.
EDIT
Note that Windows will round the maximum size given up to the nearest multiple of the system page size. So the actual size of the heap may be more than you requested. In addition, the heap will use some of this memory for its own internal book-keeping. So you won't be able to make single allocations equal to the size of the heap.