NTSTATUS Status;
Status = ZwAllocateVirtualMemory(hProcess,
- &lpAddress,
+ (PVOID *)&lpAddress,
0,
- dwSize,
+ (PULONG)&dwSize,
flAllocationType,
flProtect);
- if (Status != STATUS_SUCCESS)
+ if (!NT_SUCCESS(Status))
{
+ SetLastError(RtlNtStatusToDosError(Status));
return(NULL);
}
return(lpAddress);
NTSTATUS Status;
Status = ZwFreeVirtualMemory(hProcess,
- &lpAddress,
- dwSize,
+ (PVOID *)&lpAddress,
+ (PULONG)&dwSize,
dwFreeType);
- if (Status != STATUS_SUCCESS)
+ if (!NT_SUCCESS(Status))
{
+ SetLastError(RtlNtStatusToDosError(Status));
return(FALSE);
}
return(TRUE);
NTSTATUS Status;
Status = ZwProtectVirtualMemory(hProcess,
- lpAddress,
+ (PVOID)lpAddress,
dwSize,
flNewProtect,
- lpflOldProtect);
+ (PULONG)lpflOldProtect);
if (Status != STATUS_SUCCESS)
{
+ SetLastError(RtlNtStatusToDosError(Status));
return(FALSE);
}
return(TRUE);
}
+
+
+WINBOOL
+STDCALL
+VirtualLock (
+ LPVOID lpAddress,
+ DWORD dwSize
+ )
+{
+ ULONG BytesLocked;
+ NTSTATUS Status;
+ Status = NtLockVirtualMemory(NtCurrentProcess(),lpAddress,dwSize, &BytesLocked);
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastError(RtlNtStatusToDosError(Status));
+ return FALSE;
+ }
+ return TRUE;
+}
+
+
+DWORD
+STDCALL
+VirtualQuery (
+ LPCVOID lpAddress,
+ PMEMORY_BASIC_INFORMATION lpBuffer,
+ DWORD dwLength
+ )
+{
+ return VirtualQueryEx (NtCurrentProcess(),lpAddress, lpBuffer, dwLength );
+}
+
+#define MemoryBasicInformation 0
+DWORD
+STDCALL
+VirtualQueryEx (
+ HANDLE hProcess,
+ LPCVOID lpAddress,
+ PMEMORY_BASIC_INFORMATION lpBuffer,
+ DWORD dwLength
+ )
+{
+ NTSTATUS Status;
+ ULONG ResultLength;
+
+ Status = NtQueryVirtualMemory(
+ hProcess,(LPVOID)lpAddress,
+ MemoryBasicInformation, lpBuffer,
+ sizeof(MEMORY_BASIC_INFORMATION),
+ &ResultLength );
+
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastError(RtlNtStatusToDosError(Status));
+ return ResultLength;
+ }
+ return ResultLength;
+}
+
+
+WINBOOL
+STDCALL
+VirtualUnlock (
+ LPVOID lpAddress,
+ DWORD dwSize
+ )
+{
+ ULONG BytesLocked;
+ NTSTATUS Status;
+ Status = NtUnlockVirtualMemory(NtCurrentProcess(),lpAddress,dwSize, &BytesLocked);
+ if (!NT_SUCCESS(Status))
+ {
+ SetLastError(RtlNtStatusToDosError(Status));
+ return FALSE;
+ }
+ return TRUE;
+}