diff --git a/reactos/lib/kernel32/makefile b/reactos/lib/kernel32/makefile index d98025119cc..f34e272ab1c 100644 --- a/reactos/lib/kernel32/makefile +++ b/reactos/lib/kernel32/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.26 1999/10/02 20:20:42 ariadne Exp $ +# $Id: makefile,v 1.27 1999/10/17 18:18:43 ariadne Exp $ # # ReactOS Operating System # @@ -25,14 +25,14 @@ all: $(DLLTARGET) SYNCH_OBJECTS = synch/critical.o synch/event.o synch/wait.o synch/intrlck.o synch/timer.o MISC_OBJECTS = misc/error.o misc/atom.o misc/handle.o misc/env.o misc/dllmain.o \ - misc/console.o misc/time.o misc/stubs.o + misc/console.o misc/time.o misc/stubs.o misc/rtl.o misc/ldr.o FILE_OBJECTS = file/file.o file/curdir.o file/lfile.o file/dir.o \ file/iocompl.o file/volume.o file/deviceio.o file/dosdev.o \ file/create.o file/find.o file/copy.o file/pipe.o \ file/move.o file/lock.o file/rw.o file/delete.o -MEM_OBJECTS = mem/virtual.o mem/heap.o mem/utils.o mem/section.o mem/isbad.o +MEM_OBJECTS = mem/virtual.o mem/heap.o mem/utils.o mem/section.o mem/isbad.o mem/procmem.o NLS_OBJECTS = nls/codepage.o nls/cpmisc.o nls/cptable.o\ nls/cp37.o nls/cp437.o nls/cp500.o nls/cp737.o nls/cp775.o nls/cp850.o nls/cp852.o nls/cp855.o nls/cp857.o\ diff --git a/reactos/lib/kernel32/mem/procmem.c b/reactos/lib/kernel32/mem/procmem.c new file mode 100644 index 00000000000..f087ad70cf5 --- /dev/null +++ b/reactos/lib/kernel32/mem/procmem.c @@ -0,0 +1,64 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: lib/kernel32/mem/procmem.c + * PURPOSE: + * PROGRAMMER: Boudewijn Dekker + */ + +/* INCLUDES ******************************************************************/ + + +#include +#include + +/* FUNCTIONS *****************************************************************/ +WINBOOL +STDCALL +ReadProcessMemory ( + HANDLE hProcess, + LPCVOID lpBaseAddress, + LPVOID lpBuffer, + DWORD nSize, + LPDWORD lpNumberOfBytesRead + ) +{ + + NTSTATUS Status; + + Status = NtReadVirtualMemory( hProcess, (PVOID)lpBaseAddress,lpBuffer, nSize, + (PULONG)lpNumberOfBytesRead + ); + + if (!NT_SUCCESS(Status)) + { + SetLastError(RtlNtStatusToDosError(Status)); + return FALSE; + } + return TRUE; +} + + +WINBOOL +STDCALL +WriteProcessMemory ( + HANDLE hProcess, + LPVOID lpBaseAddress, + LPVOID lpBuffer, + DWORD nSize, + LPDWORD lpNumberOfBytesWritten + ) +{ + NTSTATUS Status; + + Status = NtWriteVirtualMemory( hProcess, lpBaseAddress,lpBuffer, nSize, + (PULONG)lpNumberOfBytesWritten + ); + + if (!NT_SUCCESS(Status)) + { + SetLastError(RtlNtStatusToDosError(Status)); + return FALSE; + } + return TRUE; +} \ No newline at end of file diff --git a/reactos/lib/kernel32/misc/ldr.c b/reactos/lib/kernel32/misc/ldr.c index 0f84e9fad5b..10533ff7136 100644 --- a/reactos/lib/kernel32/misc/ldr.c +++ b/reactos/lib/kernel32/misc/ldr.c @@ -4,16 +4,7 @@ #include #include #include -#if 0 -typedef struct _DLL -{ - PIMAGE_NT_HEADERS Headers; - PVOID BaseAddress; - HANDLE SectionHandle; - struct _DLL* Prev; - struct _DLL* Next; -} DLL, *PDLL; -#endif + HINSTANCE LoadLibraryA( LPCSTR lpLibFileName ) { @@ -28,20 +19,20 @@ HINSTANCE LoadLibraryA( LPCSTR lpLibFileName ) i = lstrlen(lpLibFileName); if ( lpLibFileName[i-1] == '.' ) { lpDllName = HeapAlloc(GetProcessHeap(),0,i+1); - lpstrcpy(lpDllName,lpLibFileName); + lstrcpy(lpDllName,lpLibFileName); lpDllName[i-1] = 0; } else if (i > 3 && lpLibFileName[i-3] != '.' ) { lpDllName = HeapAlloc(GetProcessHeap(),0,i+4); - lpstrcpy(lpDllName,lpLibFileName); - lpstrcat(lpDllName,".dll"); + lstrcpy(lpDllName,lpLibFileName); + lstrcat(lpDllName,".dll"); } else { lpDllName = HeapAlloc(GetProcessHeap(),0,i+1); - lpstrcpy(lpDllName,lpLibFileName); + lstrcpy(lpDllName,lpLibFileName); } - if ( !NT_SUCCESS(LdrLoadDll(&hInst,lpDllName )) + if ( !NT_SUCCESS(LdrLoadDll((PDLL *)&hInst,lpDllName ))) { return NULL; } @@ -54,12 +45,11 @@ FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName ) { FARPROC fnExp; - ULONG Ordinal; - if ( LOWORD(lpProcName ) - fnExp = LdrGetExportByOrdinal (hModule,Ordinal); + if ( HIWORD(lpProcName ) != 0 ) + fnExp = LdrGetExportByName (hModule,(LPSTR)lpProcName); else - fnExp = LdrGetExportByName (hModule,lpProcName); + fnExp = LdrGetExportByOrdinal (hModule,(ULONG)lpProcName); return fnExp; } @@ -70,7 +60,20 @@ WINBOOL FreeLibrary( HMODULE hLibModule ) return TRUE; } - -HMODULE GetModuleHandle ( LPCTSTR lpModuleName ) +VOID +STDCALL +FreeLibraryAndExitThread( + HMODULE hLibModule, + DWORD dwExitCode + ) { + + if ( FreeLibrary(hLibModule) ) + ExitThread(dwExitCode); + return; +} + +HMODULE GetModuleHandleA ( LPCSTR lpModuleName ) +{ + return LoadLibraryA(lpModuleName); } \ No newline at end of file diff --git a/reactos/lib/kernel32/misc/rtl.c b/reactos/lib/kernel32/misc/rtl.c index 31f3a5d22a3..c3fb2353cc4 100644 --- a/reactos/lib/kernel32/misc/rtl.c +++ b/reactos/lib/kernel32/misc/rtl.c @@ -8,7 +8,6 @@ /* INCLUDES ******************************************************************/ - #include typedef DWORD ( *RtlFillMemoryType) (DWORD Unknown0, DWORD Unknown1, DWORD Unknown2 ); diff --git a/reactos/lib/kernel32/misc/stubs.c b/reactos/lib/kernel32/misc/stubs.c index 14fecf3f6b7..e0d9e5e5064 100644 --- a/reactos/lib/kernel32/misc/stubs.c +++ b/reactos/lib/kernel32/misc/stubs.c @@ -1,4 +1,4 @@ -/* $Id: stubs.c,v 1.7 1999/10/07 23:45:07 ekohl Exp $ +/* $Id: stubs.c,v 1.8 1999/10/17 18:18:44 ariadne Exp $ * * KERNEL32.DLL stubs (unimplemented functions) * Remove from this file, if you implement them. @@ -1059,15 +1059,7 @@ FormatMessageA ( } -VOID -STDCALL -FreeLibraryAndExitThread ( - HMODULE hLibModule, - DWORD dwExitCode - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); -} + WINBOOL @@ -3176,19 +3168,7 @@ RaiseException ( } -WINBOOL -STDCALL -ReadProcessMemory ( - HANDLE hProcess, - LPCVOID lpBaseAddress, - LPVOID lpBuffer, - DWORD nSize, - LPDWORD lpNumberOfBytesRead - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} + WINBOOL @@ -3258,56 +3238,6 @@ ReleaseSemaphore ( } -/* FIXME: KERNEL32.RtlFillMemory == NTDLL.RtlFillMemory */ -DWORD -STDCALL -RtlFillMemory ( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2 - ) -{ - return 0; -} - - -/* FIXME: KERNEL32.RtlMoveMemory == NTDLL.RtlMoveMemory */ -DWORD -STDCALL -RtlMoveMemory ( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2 - ) -{ - return 0; -} - - -/* FIXME: KERNEL32.RtlUnwind == NTDLL.RtlUnwind */ -DWORD -STDCALL -RtlUnwind ( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3 - ) -{ - return 0; -} - - -/* FIXME: KERNEL32.RtlZeroMemory == NTDLL.RtlZeroMemory */ -DWORD -STDCALL -RtlZeroMemory ( - DWORD Unknown0, - DWORD Unknown1 - ) -{ - return 0; -} WINBOOL @@ -4089,19 +4019,6 @@ WritePrivateProfileStructW ( } -WINBOOL -STDCALL -WriteProcessMemory ( - HANDLE hProcess, - LPVOID lpBaseAddress, - LPVOID lpBuffer, - DWORD nSize, - LPDWORD lpNumberOfBytesWritten - ) -{ - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; -} WINBOOL