2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: lib/kernel32/mem/virtual.c
5 * PURPOSE: Passing the Virtualxxx functions onto the kernel
6 * PROGRAMMER: David Welch (welch@mcmail.com)
9 /* INCLUDES ******************************************************************/
12 #include <ddk/ntddk.h>
14 /* FUNCTIONS *****************************************************************/
16 LPVOID STDCALL
VirtualAllocEx(HANDLE hProcess
,
19 DWORD flAllocationType
,
24 Status
= ZwAllocateVirtualMemory(hProcess
,
30 if (!NT_SUCCESS(Status
))
32 SetLastError(RtlNtStatusToDosError(Status
));
38 LPVOID STDCALL
VirtualAlloc(LPVOID lpAddress
,
40 DWORD flAllocationType
,
43 return(VirtualAllocEx(GetCurrentProcess(),lpAddress
,dwSize
,flAllocationType
,
47 WINBOOL STDCALL
VirtualFreeEx(HANDLE hProcess
,
54 Status
= ZwFreeVirtualMemory(hProcess
,
58 if (!NT_SUCCESS(Status
))
60 SetLastError(RtlNtStatusToDosError(Status
));
66 WINBOOL STDCALL
VirtualFree(LPVOID lpAddress
, DWORD dwSize
, DWORD dwFreeType
)
68 return(VirtualFreeEx(GetCurrentProcess(),lpAddress
,dwSize
,dwFreeType
));
71 WINBOOL STDCALL
VirtualProtect(LPVOID lpAddress
,
74 PDWORD lpflOldProtect
)
76 return(VirtualProtectEx(GetCurrentProcess(),
84 WINBOOL STDCALL
VirtualProtectEx(HANDLE hProcess
,
88 PDWORD lpflOldProtect
)
92 Status
= ZwProtectVirtualMemory(hProcess
,
96 (PULONG
)lpflOldProtect
);
97 if (Status
!= STATUS_SUCCESS
)
99 SetLastError(RtlNtStatusToDosError(Status
));
115 Status
= NtLockVirtualMemory(NtCurrentProcess(),lpAddress
,dwSize
, &BytesLocked
);
116 if (!NT_SUCCESS(Status
))
118 SetLastError(RtlNtStatusToDosError(Status
));
129 PMEMORY_BASIC_INFORMATION lpBuffer
,
133 return VirtualQueryEx (NtCurrentProcess(),lpAddress
, lpBuffer
, dwLength
);
136 #define MemoryBasicInformation 0
142 PMEMORY_BASIC_INFORMATION lpBuffer
,
149 Status
= NtQueryVirtualMemory(
150 hProcess
,(LPVOID
)lpAddress
,
151 MemoryBasicInformation
, lpBuffer
,
152 sizeof(MEMORY_BASIC_INFORMATION
),
155 if (!NT_SUCCESS(Status
))
157 SetLastError(RtlNtStatusToDosError(Status
));
173 Status
= NtUnlockVirtualMemory(NtCurrentProcess(),lpAddress
,dwSize
, &BytesLocked
);
174 if (!NT_SUCCESS(Status
))
176 SetLastError(RtlNtStatusToDosError(Status
));