/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: kernel/rtl/mem.c * PURPOSE: Memory functions * PROGRAMMER: David Welch (welch@mcmail.com) * UPDATE HISTORY: * Created 22/05/98 */ /* INCLUDES *****************************************************************/ #include #include #define NDEBUG #include /* FUNCTIONS *****************************************************************/ #ifndef LIBCAPTIVE NTSTATUS STDCALL MmCopyToCaller(PVOID Dest, PVOID Src, ULONG NumberOfBytes) { NTSTATUS Status; if (ExGetPreviousMode() == UserMode) { if ((ULONG)Dest >= KERNEL_BASE) { return(STATUS_ACCESS_VIOLATION); } Status = MmSafeCopyToUser(Dest, Src, NumberOfBytes); return(Status); } else { memcpy(Dest, Src, NumberOfBytes); return(STATUS_SUCCESS); } } NTSTATUS STDCALL MmCopyFromCaller(PVOID Dest, PVOID Src, ULONG NumberOfBytes) { NTSTATUS Status; if (ExGetPreviousMode() == UserMode) { if ((ULONG)Src >= KERNEL_BASE) { return(STATUS_ACCESS_VIOLATION); } Status = MmSafeCopyFromUser(Dest, Src, NumberOfBytes); return(Status); } else { memcpy(Dest, Src, NumberOfBytes); return(STATUS_SUCCESS); } } #endif /* LIBCAPTIVE */ ULONG STDCALL RtlCompareMemory(PVOID Source1, PVOID Source2, ULONG Length) /* * FUNCTION: Compares blocks of memory and returns the number of equal bytes * ARGUMENTS: * Source1 = Block to compare * Source2 = Block to compare * Length = Number of bytes to compare * RETURNS: Number of equal bytes */ { ULONG i,total; for (i=0,total=0;i 0) { *Dest = Fill; Dest++; Count--; } } VOID STDCALL RtlMoveMemory ( PVOID Destination, CONST VOID * Source, ULONG Length ) { memmove ( Destination, Source, Length ); } #endif /* LIBCAPTIVE */ VOID STDCALL RtlZeroMemory ( PVOID Destination, ULONG Length ) { RtlFillMemory ( Destination, Length, 0 ); } /* EOF */