:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / subsys / win32k / eng / mem.c
1 /*
2  * COPYRIGHT:         See COPYING in the top level directory
3  * PROJECT:           ReactOS kernel
4  * PURPOSE:           GDI Driver Memory Management Functions
5  * FILE:              subsys/win32k/eng/mem.c
6  * PROGRAMER:         Jason Filby
7  * REVISION HISTORY:
8  *                 3/7/1999: Created
9  */
10
11 #include <ddk/ntddk.h>
12 #include <ddk/winddi.h>
13
14 PVOID STDCALL
15 EngAllocMem(ULONG Flags,
16             ULONG MemSize,
17             ULONG Tag)
18 {
19   PVOID newMem;
20
21   newMem = ExAllocatePoolWithTag(NonPagedPool, MemSize, Tag); // FIXME: Use PagedPool when it is implemented
22
23   if(Flags == FL_ZERO_MEMORY)
24   {
25     RtlZeroMemory(newMem, MemSize);
26   }
27
28   return newMem;
29 }
30
31 VOID STDCALL
32 EngFreeMem(PVOID Mem)
33 {
34   ExFreePool(Mem);
35 }
36
37 PVOID STDCALL
38 EngAllocUserMem(ULONG cj, ULONG tag)
39 {
40   PVOID newMem = NULL;
41   NTSTATUS status;
42
43   status = ZwAllocateVirtualMemory(NtCurrentProcess(), &newMem, 0, &cj, MEM_COMMIT, PAGE_READWRITE);
44
45   if(status != STATUS_SUCCESS) return NULL;
46   return newMem;
47 }
48
49 VOID STDCALL
50 EngFreeUserMem(PVOID pv)
51 {
52   ZwFreeVirtualMemory (NtCurrentProcess(), &pv, 0, MEM_DECOMMIT);
53 }