From c65edfad925c72ceb4d59f5dc130619b8bd25dae Mon Sep 17 00:00:00 2001 From: David Welch Date: Sat, 5 Aug 2000 18:01:58 +0000 Subject: [PATCH] Integrated fixes from prep0016 Changes to the networking code to remove anonymous structures and unions Fix for bug where RtlSetEnvironmentVariable didn't if it had acquired the PEB lock before releasing it Updating clean targets svn path=/trunk/; revision=1286 --- reactos/Makefile | 598 +++++++++--------- reactos/drivers/dd/ide/makefile | 3 +- reactos/drivers/dd/vga/display/makefile | 6 +- reactos/drivers/dd/vga/miniport/initvga.c | 2 +- reactos/drivers/fs/vfat/makefile | 4 +- reactos/drivers/net/ndis/makefile_rex | 93 --- reactos/drivers/net/ndis/ndis/MAKEFILE | 7 - reactos/drivers/net/ndis/ndis/NDIS.DEF | 314 --------- reactos/drivers/net/ndis/ndis/RESOURCE.RC | 10 - reactos/drivers/net/ndis/ndis/miniport.c | 10 +- reactos/drivers/net/ndis/ndis/protocol.c | 7 +- reactos/drivers/net/tcpip/datalink/lan.c | 6 +- reactos/drivers/net/tcpip/datalink/loopback.c | 6 +- reactos/drivers/net/tdi/Makefile | 4 +- reactos/drivers/net/tdi/misc/tdi.def | 4 +- reactos/drivers/net/tdi/misc/tdi.edf | 4 +- reactos/drivers/net/tdi/tdi/dereg.c | 10 +- reactos/drivers/net/tdi/tdi/handler.c | 4 +- reactos/drivers/net/tdi/tdi/obsolete.c | 5 +- reactos/drivers/net/tdi/tdi/stubs.c | 4 +- reactos/include/ascii.h | 12 + reactos/include/funcs.h | 2 + reactos/include/napi/teb.h | 8 +- reactos/include/net/ndis.h | 191 +++++- reactos/include/ntdll/ldr.h | 21 +- reactos/include/reactos/version.h | 8 +- reactos/include/structs.h | 20 + reactos/include/unicode.h | 12 + reactos/lib/crtdll/makefile | 4 +- reactos/lib/gdi32/makefile | 8 +- reactos/lib/kernel32/file/find.c | 35 +- reactos/lib/kernel32/kernel32.def | 12 + reactos/lib/kernel32/kernel32.edf | 15 +- reactos/lib/kernel32/makefile | 8 +- reactos/lib/kernel32/misc/ldr.c | 23 +- reactos/lib/kernel32/synch/timer.c | 10 +- reactos/lib/ntdll/def/ntdll.def | 9 +- reactos/lib/ntdll/def/ntdll.edf | 9 +- reactos/lib/ntdll/ldr/startup.c | 14 +- reactos/lib/ntdll/ldr/utils.c | 76 ++- reactos/lib/ntdll/makefile | 6 +- reactos/lib/ntdll/rtl/critical.c | 162 +++-- reactos/lib/ntdll/rtl/env.c | 18 +- reactos/lib/ntdll/rtl/ppb.c | 8 +- reactos/lib/ntdll/rtl/process.c | 23 +- reactos/lib/ntdll/stubs/stubs.c | 2 +- reactos/loaders/dos/loadros.asm | 4 +- reactos/ntoskrnl/include/internal/ldr.h | 16 + reactos/ntoskrnl/ldr/rtl.c | 170 ++--- reactos/ntoskrnl/ldr/sysdll.c | 84 ++- reactos/ntoskrnl/ps/create.c | 70 +- reactos/subsys/csrss/api/conio.c | 4 +- reactos/subsys/csrss/makefile | 4 +- 53 files changed, 1138 insertions(+), 1031 deletions(-) delete mode 100644 reactos/drivers/net/ndis/makefile_rex delete mode 100644 reactos/drivers/net/ndis/ndis/MAKEFILE delete mode 100644 reactos/drivers/net/ndis/ndis/NDIS.DEF delete mode 100644 reactos/drivers/net/ndis/ndis/RESOURCE.RC diff --git a/reactos/Makefile b/reactos/Makefile index efaaa56cd78..156954ef9c8 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -1,165 +1,165 @@ -# -# Global makefile -# - -# -# Select your host -# -#HOST = mingw32-linux -#HOST = djgpp-msdos -#HOST = mingw32-windows - -include rules.mak - -# -# Required to run the system -# -COMPONENTS = iface_native iface_additional ntoskrnl -DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32 -#DLLS = mingw32 -SUBSYS = smss win32k csrss - -# -# Select the server(s) you want to build -# -SERVERS = win32 -# SERVERS = posix linux os2 - -# -# Select the loader(s) you want to build -# -LOADERS = dos -# LOADERS = boot - -# -# Select the device drivers and filesystems you want -# -DEVICE_DRIVERS = vga blue ide keyboard null parallel serial vidport +# +# Global makefile +# + +# +# Select your host +# +#HOST = mingw32-linux +#HOST = djgpp-msdos +#HOST = mingw32-windows + +include rules.mak + +# +# Required to run the system +# +COMPONENTS = iface_native iface_additional ntoskrnl +DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32 +#DLLS = mingw32 +SUBSYS = smss win32k csrss + +# +# Select the server(s) you want to build +# +SERVERS = win32 +# SERVERS = posix linux os2 + +# +# Select the loader(s) you want to build +# +LOADERS = dos +# LOADERS = boot + +# +# Select the device drivers and filesystems you want +# +DEVICE_DRIVERS = vidport vga blue ide keyboard null parallel serial # DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 -FS_DRIVERS = vfat -# FS_DRIVERS = minix ext2 template +FS_DRIVERS = vfat +# FS_DRIVERS = minix ext2 template # ndis tdi tcpip tditest NET_DRIVERS = ndis tcpip tditest KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS) - -APPS = args hello shell test cat bench apc shm lpc thread event file gditest \ - pteb consume - -# objdir - -all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS) - -.PHONY: all - -clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \ - $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(APPS:%=%_clean) - -.PHONY: clean - -floppy: make_floppy_dirs autoexec_floppy $(COMPONENTS:%=%_floppy) \ - $(DLLS:%=%_floppy) $(LOADERS:%=%_floppy) \ - $(KERNEL_SERVICES:%=%_floppy) $(SUBSYS:%=%_floppy) \ - $(APPS:%=%_floppy) - -dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \ - $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \ - $(APPS:%=%_dist) - -# -# Build number generator -# -buildno: include/reactos/version.h - make -C apps/buildno - -buildno_clean: - make -C apps/buildno clean - -buildno_floppy: - -buildno_dist: - -.PHONY: buildno buildno_clean buildno_floppy buildno_dist - -# -# Applications -# -$(APPS): %: - make -C apps/$* - -$(APPS:%=%_clean): %_clean: - make -C apps/$* clean - -$(APPS:%=%_floppy): %_floppy: - make -C apps/$* floppy - -$(APPS:%=%_dist): %_dist: - make -C apps/$* dist - -.PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_floppy) $(APPS:%=%_dist) - -# -# Interfaces -# -iface_native: - make -C iface/native - -iface_native_clean: - make -C iface/native clean - -iface_native_floppy: - -iface_native_dist: - -iface_additional: - make -C iface/addsys - -iface_additional_clean: - make -C iface/addsys clean - -iface_additional_floppy: - -iface_additional_dist: - -.PHONY: iface_native iface_native_clean iface_native_floppy \ - iface_native_dist \ - iface_additional iface_additional_clean iface_additional_floppy \ - iface_additional_dist \ - -# -# Device driver rules -# -$(DEVICE_DRIVERS): %: - make -C services/dd/$* - -$(DEVICE_DRIVERS:%=%_clean): %_clean: - make -C services/dd/$* clean - -$(DEVICE_DRIVERS:%=%_floppy): %_floppy: - make -C services/dd/$* floppy - -$(DEVICE_DRIVERS:%=%_dist): %_dist: - make -C services/dd/$* dist - -.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \ - $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist) - -$(FS_DRIVERS): %: - make -C services/fs/$* - -$(FS_DRIVERS:%=%_clean): %_clean: - make -C services/fs/$* clean - -$(FS_DRIVERS:%=%_floppy): %_floppy: - make -C services/fs/$* floppy - -$(FS_DRIVERS:%=%_dist): %_dist: - make -C services/fs/$* dist - -.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \ - $(FS_DRIVERS:%=%_dist) + +APPS = args hello shell test cat bench apc shm lpc thread event file gditest \ + pteb consume + +# objdir + +all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS) + +.PHONY: all + +clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \ + $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(APPS:%=%_clean) + +.PHONY: clean + +floppy: make_floppy_dirs autoexec_floppy $(COMPONENTS:%=%_floppy) \ + $(DLLS:%=%_floppy) $(LOADERS:%=%_floppy) \ + $(KERNEL_SERVICES:%=%_floppy) $(SUBSYS:%=%_floppy) \ + $(APPS:%=%_floppy) + +dist: clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \ + $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \ + $(APPS:%=%_dist) + +# +# Build number generator +# +buildno: include/reactos/version.h + make -C apps/buildno + +buildno_clean: + make -C apps/buildno clean + +buildno_floppy: + +buildno_dist: + +.PHONY: buildno buildno_clean buildno_floppy buildno_dist + +# +# Applications +# +$(APPS): %: + make -C apps/$* + +$(APPS:%=%_clean): %_clean: + make -C apps/$* clean + +$(APPS:%=%_floppy): %_floppy: + make -C apps/$* floppy + +$(APPS:%=%_dist): %_dist: + make -C apps/$* dist + +.PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_floppy) $(APPS:%=%_dist) + +# +# Interfaces +# +iface_native: + make -C iface/native + +iface_native_clean: + make -C iface/native clean + +iface_native_floppy: + +iface_native_dist: + +iface_additional: + make -C iface/addsys + +iface_additional_clean: + make -C iface/addsys clean + +iface_additional_floppy: + +iface_additional_dist: + +.PHONY: iface_native iface_native_clean iface_native_floppy \ + iface_native_dist \ + iface_additional iface_additional_clean iface_additional_floppy \ + iface_additional_dist \ + +# +# Device driver rules +# +$(DEVICE_DRIVERS): %: + make -C services/dd/$* + +$(DEVICE_DRIVERS:%=%_clean): %_clean: + make -C services/dd/$* clean + +$(DEVICE_DRIVERS:%=%_floppy): %_floppy: + make -C services/dd/$* floppy + +$(DEVICE_DRIVERS:%=%_dist): %_dist: + make -C services/dd/$* dist + +.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \ + $(DEVICE_DRIVERS:%=%_floppy) $(DEVICE_DRIVERS:%=%_dist) + +$(FS_DRIVERS): %: + make -C services/fs/$* + +$(FS_DRIVERS:%=%_clean): %_clean: + make -C services/fs/$* clean + +$(FS_DRIVERS:%=%_floppy): %_floppy: + make -C services/fs/$* floppy + +$(FS_DRIVERS:%=%_dist): %_dist: + make -C services/fs/$* dist + +.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_floppy) \ + $(FS_DRIVERS:%=%_dist) $(NET_DRIVERS): %: make -C services/net/$* @@ -169,147 +169,147 @@ $(NET_DRIVERS:%=%_clean): %_clean: .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) - -# -# Kernel loaders -# - -$(LOADERS): %: - make -C loaders/$* - -$(LOADERS:%=%_clean): %_clean: - make -C loaders/$* clean - -$(LOADERS:%=%_floppy): %_floppy: - make -C loaders/$* floppy - -$(LOADERS:%=%_dist): %_dist: - make -C loaders/$* dist - -.PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \ - $(LOADERS:%=%_dist) - -# -# Required system components -# - -ntoskrnl: - make -C ntoskrnl - -ntoskrnl_clean: - make -C ntoskrnl clean - -ntoskrnl_floppy: - make -C ntoskrnl floppy - -ntoskrnl_dist: - make -C ntoskrnl dist - -.PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist - -# -# Required DLLs -# - -$(DLLS): %: - make -C lib/$* - -$(DLLS:%=%_clean): %_clean: - make -C lib/$* clean - -$(DLLS:%=%_floppy): %_floppy: - make -C lib/$* floppy - -$(DLLS:%=%_dist): %_dist: - make -C lib/$* dist - -.PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist) - -# -# Kernel Subsystems -# -$(SUBSYS): %: - make -C subsys/$* - -$(SUBSYS:%=%_clean): %_clean: - make -C subsys/$* clean - -$(SUBSYS:%=%_floppy): %_floppy: - make -C subsys/$* floppy - -$(SUBSYS:%=%_dist): %_dist: - make -C subsys/$* dist - -.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \ - $(SUBSYS:%=%_dist) - -# -# Make an install floppy -# - -install: all - ./install.sh /mnt/hda1 - ./install.sh /mnt/hda4 - ./install.bochs - -make_floppy_dirs: -ifeq ($(DOSCLI),yes) - mkdir $(FLOPPY_DIR)\dlls - mkdir $(FLOPPY_DIR)\apps - mkdir $(FLOPPY_DIR)\drivers - mkdir $(FLOPPY_DIR)\subsys -else - mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers - mkdir $(FLOPPY_DIR)/subsys -endif - -.PHONY: make_floppy_dirs - -autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat - -$(FLOPPY_DIR)/autoexec.bat: bootflop.bat -ifeq ($(DOSCLI),yes) - $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat -else - $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat -endif - -# -# Make a distribution saveset -# - -clean_dist_dir: -ifeq ($(DOSCLI),yes) - - $(RM) $(DIST_DIR)\dlls\*.dll - - $(RM) $(DIST_DIR)\apps\*.exe - - $(RM) $(DIST_DIR)\drivers\*.sys - - $(RM) $(DIST_DIR)\subsys\*.exe - - $(RMDIR) $(DIST_DIR)\dlls - - $(RMDIR) $(DIST_DIR)\apps - - $(RMDIR) $(DIST_DIR)\drivers - - $(RMDIR) $(DIST_DIR)\subsys - - $(RMDIR) $(DIST_DIR) -else - $(RM) -r $(DIST_DIR) -endif - -make_dist_dirs: -ifeq ($(DOSCLI),yes) - mkdir $(DIST_DIR) - mkdir $(DIST_DIR)\dlls - mkdir $(DIST_DIR)\apps - mkdir $(DIST_DIR)\drivers - mkdir $(DIST_DIR)\dlls - mkdir $(DIST_DIR)\subsys -else - mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers - mkdir $(DIST_DIR)/subsys -endif - -.PHONY: clean_dist_dir make_dist_dirs - -# -# -# -etags: - find . -name "*.[ch]" -print | etags --language=c - + +# +# Kernel loaders +# + +$(LOADERS): %: + make -C loaders/$* + +$(LOADERS:%=%_clean): %_clean: + make -C loaders/$* clean + +$(LOADERS:%=%_floppy): %_floppy: + make -C loaders/$* floppy + +$(LOADERS:%=%_dist): %_dist: + make -C loaders/$* dist + +.PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_floppy) \ + $(LOADERS:%=%_dist) + +# +# Required system components +# + +ntoskrnl: + make -C ntoskrnl + +ntoskrnl_clean: + make -C ntoskrnl clean + +ntoskrnl_floppy: + make -C ntoskrnl floppy + +ntoskrnl_dist: + make -C ntoskrnl dist + +.PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_floppy ntoskrnl_dist + +# +# Required DLLs +# + +$(DLLS): %: + make -C lib/$* + +$(DLLS:%=%_clean): %_clean: + make -C lib/$* clean + +$(DLLS:%=%_floppy): %_floppy: + make -C lib/$* floppy + +$(DLLS:%=%_dist): %_dist: + make -C lib/$* dist + +.PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_floppy) $(DLLS:%=%_dist) + +# +# Kernel Subsystems +# +$(SUBSYS): %: + make -C subsys/$* + +$(SUBSYS:%=%_clean): %_clean: + make -C subsys/$* clean + +$(SUBSYS:%=%_floppy): %_floppy: + make -C subsys/$* floppy + +$(SUBSYS:%=%_dist): %_dist: + make -C subsys/$* dist + +.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_floppy) \ + $(SUBSYS:%=%_dist) + +# +# Make an install floppy +# + +install: all + ./install.sh /mnt/hda1 + ./install.sh /mnt/hda4 + ./install.bochs + +make_floppy_dirs: +ifeq ($(DOSCLI),yes) + mkdir $(FLOPPY_DIR)\dlls + mkdir $(FLOPPY_DIR)\apps + mkdir $(FLOPPY_DIR)\drivers + mkdir $(FLOPPY_DIR)\subsys +else + mkdir $(FLOPPY_DIR)/dlls $(FLOPPY_DIR)/apps $(FLOPPY_DIR)/drivers + mkdir $(FLOPPY_DIR)/subsys +endif + +.PHONY: make_floppy_dirs + +autoexec_floppy: $(FLOPPY_DIR)/autoexec.bat + +$(FLOPPY_DIR)/autoexec.bat: bootflop.bat +ifeq ($(DOSCLI),yes) + $(CP) bootflop.bat $(FLOPPY_DIR)\autoexec.bat +else + $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat +endif + +# +# Make a distribution saveset +# + +clean_dist_dir: +ifeq ($(DOSCLI),yes) + - $(RM) $(DIST_DIR)\dlls\*.dll + - $(RM) $(DIST_DIR)\apps\*.exe + - $(RM) $(DIST_DIR)\drivers\*.sys + - $(RM) $(DIST_DIR)\subsys\*.exe + - $(RMDIR) $(DIST_DIR)\dlls + - $(RMDIR) $(DIST_DIR)\apps + - $(RMDIR) $(DIST_DIR)\drivers + - $(RMDIR) $(DIST_DIR)\subsys + - $(RMDIR) $(DIST_DIR) +else + $(RM) -r $(DIST_DIR) +endif + +make_dist_dirs: +ifeq ($(DOSCLI),yes) + mkdir $(DIST_DIR) + mkdir $(DIST_DIR)\dlls + mkdir $(DIST_DIR)\apps + mkdir $(DIST_DIR)\drivers + mkdir $(DIST_DIR)\dlls + mkdir $(DIST_DIR)\subsys +else + mkdir $(DIST_DIR) $(DIST_DIR)/dlls $(DIST_DIR)/apps $(DIST_DIR)/drivers + mkdir $(DIST_DIR)/subsys +endif + +.PHONY: clean_dist_dir make_dist_dirs + +# +# +# +etags: + find . -name "*.[ch]" -print | etags --language=c - diff --git a/reactos/drivers/dd/ide/makefile b/reactos/drivers/dd/ide/makefile index d6be3de0963..d5ed878b2ab 100644 --- a/reactos/drivers/dd/ide/makefile +++ b/reactos/drivers/dd/ide/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.12 2000/07/19 14:18:20 dwelch Exp $ +# $Id: makefile,v 1.13 2000/08/05 18:01:54 dwelch Exp $ # # TARGET=ide @@ -18,6 +18,7 @@ clean: - $(RM) base.tmp - $(RM) temp.exp - $(RM) $(TARGET).sys + - $(RM) $(TARGET).nostrip.sys .phony: clean diff --git a/reactos/drivers/dd/vga/display/makefile b/reactos/drivers/dd/vga/display/makefile index fa4da820a74..c5a5f455268 100644 --- a/reactos/drivers/dd/vga/display/makefile +++ b/reactos/drivers/dd/vga/display/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.7 2000/07/01 23:18:58 dwelch Exp $ +# $Id: makefile,v 1.8 2000/08/05 18:01:55 dwelch Exp $ # # Makefile for ReactOS vgaddi.dll # @@ -66,9 +66,9 @@ $(TARGET).dll: $(DLLMAIN) $(OBJECTS) $(TARGET).def $(NM) --numeric-sort $(TARGET).dll > $(TARGET).sym ifeq ($(DOSCLI),yes) -CLEAN_FILES = *.o *.coff *.sym *.tmp *.dll main\*.o +CLEAN_FILES = *.o *.coff *.sym *.tmp *.dll main\*.o objects\*.o vgavideo\*.o *.a else -CLEAN_FILES = *.o *.coff *.sym *.tmp *.dll main/*.o +CLEAN_FILES = *.o *.coff *.sym *.tmp *.dll main/*.o objects/*.o vgavideo/*.o *.a endif clean: $(CLEAN_FILES:%=%_clean) diff --git a/reactos/drivers/dd/vga/miniport/initvga.c b/reactos/drivers/dd/vga/miniport/initvga.c index 0ef1d509dc8..3e8715fd8aa 100644 --- a/reactos/drivers/dd/vga/miniport/initvga.c +++ b/reactos/drivers/dd/vga/miniport/initvga.c @@ -1,6 +1,6 @@ #include #include -#include "vgaVideo.h" +#include "vgavideo.h" #include "../../../../ntoskrnl/include/internal/i386/io.h" void outxay(USHORT ad, UCHAR x, UCHAR y) diff --git a/reactos/drivers/fs/vfat/makefile b/reactos/drivers/fs/vfat/makefile index cf13126cdca..c53bf5fd911 100644 --- a/reactos/drivers/fs/vfat/makefile +++ b/reactos/drivers/fs/vfat/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.18 2000/07/19 14:18:20 dwelch Exp $ +# $Id: makefile,v 1.19 2000/08/05 18:01:55 dwelch Exp $ # # TARGET=vfatfs @@ -22,7 +22,7 @@ ifeq ($(DOSCLI),yes) - $(RM) temp.exp - $(RM) $(TARGET).sys else - - $(RM) $(OBJECTS) $(TARGET).coff junk.tmp base.tmp temp.exp $(TARGET).sys + - $(RM) $(OBJECTS) $(TARGET).coff junk.tmp base.tmp temp.exp $(TARGET).sys $(TARGET).nostrip.sys endif .phony: clean diff --git a/reactos/drivers/net/ndis/makefile_rex b/reactos/drivers/net/ndis/makefile_rex deleted file mode 100644 index a7311951e98..00000000000 --- a/reactos/drivers/net/ndis/makefile_rex +++ /dev/null @@ -1,93 +0,0 @@ -# NDIS.SYS - NDIS library - -TARGETNAME=ndis - -BASE_CFLAGS = -I./include -I../../../include -DNDIS_WRAPPER -DBINARY_COMPATIBLE=1 - -RESOURCE_OBJECT = $(TARGETNAME).coff -NDIS_OBJECTS = ndis/main.o ndis/40gone.o ndis/50gone.o ndis/buffer.o ndis/cl.o \ - ndis/cm.o ndis/co.o ndis/control.o ndis/hardware.o \ - ndis/io.o ndis/memory.o ndis/miniport.o \ - ndis/protocol.o ndis/string.o ndis/stubs.o ndis/time.o - -all: objects $(TARGETNAME).sys - -objects: - mkdir objects - -$(TARGETNAME).coff: $(TARGETNAME).rc ../../../include/reactos/resource.h - -OBJECTS = $(NDIS_OBJECTS) $(RESOURCE_OBJECT) ../../../ntoskrnl/ntoskrnl.a - - -ifeq ($(DOSCLI),yes) -CLEAN_FILES = *.o objects\*.o ndis\*.o $(TARGETNAME).coff $(TARGETNAME).o $(TARGETNAME).a \ - junk.tmp base.tmp temp.exp $(TARGETNAME).sys $(TARGETNAME).sym -else -CLEAN_FILES = *.o objects/*.o ndis/*.o $(TARGETNAME).coff $(TARGETNAME).o $(TARGETNAME).a \ - junk.tmp base.tmp temp.exp $(TARGETNAME).sys $(TARGETNAME).sym -endif - -$(TARGETNAME).sys: $(OBJECTS) - $(DLLTOOL) \ - --dllname $(TARGETNAME).sys \ - --def $(TARGETNAME).def \ - --kill-at \ - --output-lib $(TARGETNAME).a - $(CC) \ - -mdll \ - -specs=../../svc_specs \ - -Wl,-e,_DriverEntry@8 \ - -Wl,--base-file,base.tmp \ - -Wl,--defsym,_end=end \ - -Wl,--defsym,_edata=__data_end__ \ - -Wl,--defsym,_etext=etext \ - $(OBJECTS) \ - -o junk.tmp - - $(RM) junk.tmp - $(DLLTOOL) \ - --dllname $(TARGETNAME).sys \ - --base-file base.tmp \ - --output-exp temp.exp \ - --def $(TARGETNAME).edf - - $(RM) base.tmp - $(CC) \ - -mdll \ - -specs=../../svc_specs \ - -Wl,--image-base,0x10000 \ - -Wl,-e,_DriverEntry@8 \ - -Wl,temp.exp \ - $(OBJECTS) \ - -o $(TARGETNAME).sys - - $(RM) temp.exp - $(NM) --numeric-sort $(TARGETNAME).sys > $(TARGETNAME).sym - -clean: $(CLEAN_FILES:%=%_clean) - -$(CLEAN_FILES:%=%_clean): %_clean: - - $(RM) $* - -.PHONY: clean $(CLEAN_FILES:%=%_clean) - -floppy: $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys - -$(FLOPPY_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys -ifeq ($(DOSCLI),yes) - $(CP) $(TARGETNAME).sys $(FLOPPY_DIR)\drivers\$(TARGETNAME).sys -else - $(CP) $(TARGETNAME).sys $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys -endif - -dist: $(DIST_DIR)/drivers/$(TARGETNAME).sys - -$(DIST_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys -ifeq ($(DOSCLI),yes) - $(CP) $(TARGETNAME).sys ..\..\$(DIST_DIR)\drivers\$(TARGETNAME).sys -else - $(CP) $(TARGETNAME).sys ../../$(DIST_DIR)/drivers/$(TARGETNAME).sys -endif - -#WITH_DEBUGGING = yes -#WIN32_LEAN_AND_MEAN = yes -#WARNINGS_ARE_ERRORS = yes -include ../../../rules.mak diff --git a/reactos/drivers/net/ndis/ndis/MAKEFILE b/reactos/drivers/net/ndis/ndis/MAKEFILE deleted file mode 100644 index 58189757d61..00000000000 --- a/reactos/drivers/net/ndis/ndis/MAKEFILE +++ /dev/null @@ -1,7 +0,0 @@ -# -# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source -# file to this component. This file merely indirects to the real make file -# that is shared by all the driver components of the Windows NT DDK -# - -!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/reactos/drivers/net/ndis/ndis/NDIS.DEF b/reactos/drivers/net/ndis/ndis/NDIS.DEF deleted file mode 100644 index 0e8131d4abc..00000000000 --- a/reactos/drivers/net/ndis/ndis/NDIS.DEF +++ /dev/null @@ -1,314 +0,0 @@ -; NDIS Kernel Module - ReactOS Operating System - -LIBRARY NDIS.SYS - -EXPORTS -ArcFilterDprIndicateReceive -ArcFilterDprIndicateReceiveComplete -EthChangeFilterAddresses -EthCreateFilter -EthDeleteFilter -EthDeleteFilterOpenAdapter -EthFilterAdjust -;EthFilterDprIndicateReceive ? -;EthFilterDprIndicateReceiveComplete ? -EthFilterIndicateReceive -EthFilterIndicateReceiveComplete -EthNoteFilterOpenAdapter -EthNumberOfOpenFilterAddresses -EthQueryGlobalFilterAddresses -EthQueryOpenFilterAddresses -EthShouldAddressLoopBack -FddiChangeFilterLongAddresses -FddiChangeFilterShortAddresses -FddiCreateFilter -FddiDeleteFilter -FddiDeleteFilterOpenAdapter -FddiFilterAdjust -;FddiFilterDprIndicateReceive ? -;FddiFilterDprIndicateReceiveComplete ? -FddiFilterIndicateReceive -FddiFilterIndicateReceiveComplete -FddiNoteFilterOpenAdapter -FddiNumberOfOpenFilterLongAddresses -FddiNumberOfOpenFilterShortAddresses -FddiQueryGlobalFilterLongAddresses -FddiQueryGlobalFilterShortAddresses -FddiQueryOpenFilterLongAddresses -FddiQueryOpenFilterShortAddresses -FddiShouldAddressLoopBack -NDIS_BUFFER_TO_SPAN_PAGES -NdisAcquireReadWriteLock -NdisAcquireSpinLock -NdisAdjustBufferLength -NdisAllocateBuffer -NdisAllocateBufferPool -NdisAllocateDmaChannel -NdisAllocateMemory -NdisAllocateMemoryWithTag -NdisAllocatePacket -NdisAllocatePacketPool -NdisAllocatePacketPoolEx -NdisAllocateSharedMemory -NdisAllocateSpinLock -NdisAnsiStringToUnicodeString -NdisBufferLength -NdisBufferVirtualAddress -NdisCancelTimer -NdisClAddParty -NdisClCloseAddressFamily -NdisClCloseCall -NdisClDeregisterSap -NdisClDropParty -NdisClIncomingCallComplete -NdisClMakeCall -NdisClModifyCallQoS -NdisClOpenAddressFamily -NdisClRegisterSap -NdisCloseAdapter -NdisCloseConfiguration -NdisCloseFile -NdisCmActivateVc -NdisCmAddPartyComplete -NdisCmCloseAddressFamilyComplete -NdisCmCloseCallComplete -NdisCmDeactivateVc -NdisCmDeregisterSapComplete -NdisCmDispatchCallConnected -NdisCmDispatchIncomingCall -NdisCmDispatchIncomingCallQoSChange -NdisCmDispatchIncomingCloseCall -NdisCmDispatchIncomingDropParty -NdisCmDropPartyComplete -NdisCmMakeCallComplete -NdisCmModifyCallQoSComplete -NdisCmOpenAddressFamilyComplete -NdisCmRegisterAddressFamily -NdisCmRegisterSapComplete -NdisCoCreateVc -NdisCoDeleteVc -NdisCoRequest -NdisCoRequestComplete -NdisCoSendPackets -;NdisCompareAnsiString ? -;NdisCompareUnicodeString ? -NdisCompleteBindAdapter -NdisCompleteCloseAdapter -NdisCompleteDmaTransfer -NdisCompleteOpenAdapter -NdisCompletePnPEvent -NdisCompleteQueryStatistics -NdisCompleteUnbindAdapter -NdisConvertStringToAtmAddress -NdisCopyBuffer -NdisCopyFromPacketToPacket -NdisDeregisterAdapter -NdisDeregisterAdapterShutdownHandler -NdisDeregisterMac -NdisDeregisterProtocol -NdisDprAcquireSpinLock -NdisDprAllocatePacket -NdisDprAllocatePacketNonInterlocked -NdisDprFreePacket -NdisDprFreePacketNonInterlocked -NdisDprReleaseSpinLock -NdisEqualString -NdisFlushBuffer -NdisFreeBuffer -NdisFreeBufferPool -NdisFreeDmaChannel -NdisFreeMemory -NdisFreePacket -NdisFreePacketPool -NdisFreeSharedMemory -NdisFreeSpinLock -NdisGetBufferPhysicalArraySize -NdisGetCurrentProcessorCounts -NdisGetCurrentProcessorCpuUsage -NdisGetCurrentSystemTime -NdisGetDriverHandle -NdisGetFirstBufferFromPacket -NdisGetReceivedPacket -NdisGetSystemUptime -NdisIMAssociateMiniport -NdisIMCancelInitializeDeviceInstance -NdisIMCopySendCompletePerPacketInfo -NdisIMCopySendPerPacketInfo -NdisIMDeInitializeDeviceInstance -NdisIMDeregisterLayeredMiniport -NdisIMGetBindingContext -NdisIMGetDeviceContext -NdisIMInitializeDeviceInstance -NdisIMInitializeDeviceInstanceEx -NdisImmediateReadPciSlotInformation -NdisImmediateReadPortUchar -NdisImmediateReadPortUlong -NdisImmediateReadPortUshort -NdisImmediateReadSharedMemory -NdisImmediateWritePciSlotInformation -NdisImmediateWritePortUchar -NdisImmediateWritePortUlong -NdisImmediateWritePortUshort -NdisImmediateWriteSharedMemory -NdisIMQueueMiniportCallback -NdisIMRegisterLayeredMiniport -NdisIMRevertBack -NdisIMSwitchToMiniport -NdisInitAnsiString -NdisInitializeEvent -NdisInitializeInterrupt -NdisInitializeReadWriteLock -NdisInitializeString -NdisInitializeTimer -NdisInitializeWrapper -NdisInitUnicodeString -;NdisInterlockedAddLargeInterger ? -NdisInterlockedAddUlong -NdisInterlockedDecrement -NdisInterlockedIncrement -NdisInterlockedInsertHeadList -NdisInterlockedInsertTailList -NdisInterlockedPopEntrySList -NdisInterlockedPushEntrySList -NdisInterlockedRemoveHeadList -NdisMAllocateMapRegisters -NdisMAllocateSharedMemory -NdisMAllocateSharedMemoryAsync -NdisMapFile -NdisMapIoSpace -;NdisMatchPdoWithPacket ? -NdisMCancelTimer -NdisMCloseLog -NdisMCmActivateVc -NdisMCmCreateVc -NdisMCmDeactivateVc -NdisMCmDeleteVc -NdisMCmRegisterAddressFamily -NdisMCmRequest -NdisMCoActivateVcComplete -NdisMCoDeactivateVcComplete -NdisMCoIndicateReceivePacket -NdisMCoIndicateStatus -NdisMCompleteBufferPhysicalMapping -NdisMCoReceiveComplete -NdisMCoRequestComplete -NdisMCoSendComplete -NdisMCreateLog -NdisMDeregisterAdapterShutdownHandler -NdisMDeregisterDevice -NdisMDeregisterDmaChannel -NdisMDeregisterInterrupt -NdisMDeregisterIoPortRange -NdisMFlushLog -NdisMFreeMapRegisters -NdisMFreeSharedMemory -NdisMGetDeviceProperty -NdisMIndicateStatus -NdisMIndicateStatusComplete -NdisMInitializeScatterGatherDma -NdisMInitializeTimer -NdisMMapIoSpace -NdisMPciAssignResources -NdisMPromoteMiniport -NdisMQueryAdapterInstanceName -NdisMQueryAdapterResources -NdisMQueryInformationComplete -NdisMReadDmaCounter -NdisMRegisterAdapterShutdownHandler -NdisMRegisterDevice -NdisMRegisterDmaChannel -NdisMRegisterInterrupt -NdisMRegisterIoPortRange -NdisMRegisterMiniport -NdisMRegisterUnloadHandler -NdisMRemoveMiniport -NdisMResetComplete -NdisMSendComplete -NdisMSendResourcesAvailable -NdisMSetAttributes -NdisMSetAttributesEx -NdisMSetInformationComplete -NdisMSetMiniportSecondary -NdisMSetPeriodicTimer -NdisMSetTimer -NdisMSleep -NdisMStartBufferPhysicalMapping -NdisMSynchronizeWithInterrupt -NdisMTransferDataComplete -NdisMUnmapIoSpace -NdisMWanIndicateReceive -NdisMWanIndicateReceiveComplete -NdisMWanSendComplete -NdisMWriteLogData -NdisOpenAdapter -NdisOpenConfiguration -NdisOpenConfigurationKeyByIndex -NdisOpenConfigurationKeyByName -NdisOpenFile -NdisOpenProtocolConfiguration -;NdisOverrideBusNumber ? -NdisPacketPoolUsage -NdisPciAssignResources -NdisQueryAdapterInstanceName -;NdisQueryBindInstanceName? -NdisQueryBuffer -NdisQueryBufferOffset -NdisQueryBufferSafe -NdisQueryMapRegisterCount -NdisReadConfiguration -NdisReadEisaSlotInformation -NdisReadEisaSlotInformationEx -NdisReadMcaPosInformation -NdisReadNetworkAddress -NdisReadPciSlotInformation -NdisReadPcmciaAttributeMemory -;NdisReEnumerateProtocolBindings ? -NdisRegisterAdapter -NdisRegisterAdapterShutdownHandler -NdisRegisterMac -NdisRegisterProtocol -;NdisRegisterTdiCallBack ? -NdisReleaseAdapterResources -NdisReleaseReadWriteLock -NdisReleaseSpinLock -NdisRemoveInterrupt -NdisRequest -NdisReset -NdisResetEvent -NdisReturnPackets -NdisSend -NdisSendPackets -NdisSetEvent -;NdisSetPacketPoolProtocolId ? -;NdisSetProtocolFilter ? -NdisSetTimer -NdisSetupDmaTransfer -NdisSystemProcessorCount -NdisTerminateWrapper -NdisTransferData -NdisUnchainBufferAtBack -NdisUnchainBufferAtFront -NdisUnicodeStringToAnsiString -NdisUnmapFile -NdisUpcaseUnicodeString -NdisUpdateSharedMemory -NdisWaitEvent -NdisWriteConfiguration -;NdisWriteErrorLogEntry -NdisWriteEventLogEntry -NdisWritePciSlotInformation -NdisWritePcmciaAttributeMemory -TrChangeFunctionalAddress -TrChangeGroupAddress -TrCreateFilter -TrDeleteFilter -TrDeleteFilterOpenAdapter -TrFilterAdjust -;TrFilterDprIndicateReceive -;TrFilterDprIndicateReceiveComplete -TrFilterIndicateReceive -TrFilterIndicateReceiveComplete -TrNoteFilterOpenAdapter -TrShouldAddressLoopBack - -; EOF diff --git a/reactos/drivers/net/ndis/ndis/RESOURCE.RC b/reactos/drivers/net/ndis/ndis/RESOURCE.RC deleted file mode 100644 index 3a8ee5502de..00000000000 --- a/reactos/drivers/net/ndis/ndis/RESOURCE.RC +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -#define VER_FILETYPE VFT_DRV -#define VER_FILESUBTYPE VFT2_DRV_NETWORK -#define VER_FILEDESCRIPTION_STR "NDIS library" -#define VER_INTERNALNAME_STR "NDIS.SYS" -#define VER_ORIGINALFILENAME_STR "NDIS.SYS" - -#include "common.ver" diff --git a/reactos/drivers/net/ndis/ndis/miniport.c b/reactos/drivers/net/ndis/ndis/miniport.c index dc470d36db2..6def0baf113 100644 --- a/reactos/drivers/net/ndis/ndis/miniport.c +++ b/reactos/drivers/net/ndis/ndis/miniport.c @@ -308,15 +308,15 @@ NdisMRegisterMiniport( switch (MiniportCharacteristics->MajorNdisVersion) { case 0x03: - MinSize = sizeof(NDIS30_MINIPORT_CHARACTERISTICS); + MinSize = sizeof(NDIS30_MINIPORT_CHARACTERISTICS_S); break; case 0x04: - MinSize = sizeof(NDIS40_MINIPORT_CHARACTERISTICS); + MinSize = sizeof(NDIS40_MINIPORT_CHARACTERISTICS_S); break; case 0x05: - MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS); + MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS_S); break; default: @@ -340,13 +340,13 @@ NdisMRegisterMiniport( } if (MiniportCharacteristics->MajorNdisVersion == 0x03) { - if (!MiniportCharacteristics->SendHandler) { + if (!MiniportCharacteristics->u1.SendHandler) { NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n")); return NDIS_STATUS_BAD_CHARACTERISTICS; } } else if (MiniportCharacteristics->MajorNdisVersion >= 0x04) { /* NDIS 4.0+ */ - if ((!MiniportCharacteristics->SendHandler) && + if ((!MiniportCharacteristics->u1.SendHandler) && (!MiniportCharacteristics->SendPacketsHandler)) { NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n")); return NDIS_STATUS_BAD_CHARACTERISTICS; diff --git a/reactos/drivers/net/ndis/ndis/protocol.c b/reactos/drivers/net/ndis/ndis/protocol.c index 77047383f18..39a3b16934d 100644 --- a/reactos/drivers/net/ndis/ndis/protocol.c +++ b/reactos/drivers/net/ndis/ndis/protocol.c @@ -28,6 +28,7 @@ VOID ProtocolWorker( VOID EXPORT +STDCALL NdisCloseAdapter( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle) @@ -188,15 +189,15 @@ NdisRegisterProtocol( switch (ProtocolCharacteristics->MajorNdisVersion) { case 0x03: - MinSize = sizeof(NDIS30_PROTOCOL_CHARACTERISTICS); + MinSize = sizeof(NDIS30_PROTOCOL_CHARACTERISTICS_S); break; case 0x04: - MinSize = sizeof(NDIS40_PROTOCOL_CHARACTERISTICS); + MinSize = sizeof(NDIS40_PROTOCOL_CHARACTERISTICS_S); break; case 0x05: - MinSize = sizeof(NDIS50_PROTOCOL_CHARACTERISTICS); + MinSize = sizeof(NDIS50_PROTOCOL_CHARACTERISTICS_S); break; default: diff --git a/reactos/drivers/net/tcpip/datalink/lan.c b/reactos/drivers/net/tcpip/datalink/lan.c index df15ca94b8b..d940bc615e7 100644 --- a/reactos/drivers/net/tcpip/datalink/lan.c +++ b/reactos/drivers/net/tcpip/datalink/lan.c @@ -862,9 +862,9 @@ NTSTATUS LANRegisterProtocol( ProtChars.CloseAdapterCompleteHandler = ProtocolCloseAdapterComplete; ProtChars.ResetCompleteHandler = ProtocolResetComplete; ProtChars.RequestCompleteHandler = ProtocolRequestComplete; - ProtChars.SendCompleteHandler = ProtocolSendComplete; - ProtChars.TransferDataCompleteHandler = ProtocolTransferDataComplete; - ProtChars.ReceiveHandler = ProtocolReceive; + ProtChars.u2.SendCompleteHandler = ProtocolSendComplete; + ProtChars.u3.TransferDataCompleteHandler = ProtocolTransferDataComplete; + ProtChars.u4.ReceiveHandler = ProtocolReceive; ProtChars.ReceiveCompleteHandler = ProtocolReceiveComplete; ProtChars.StatusHandler = ProtocolStatus; ProtChars.StatusCompleteHandler = ProtocolStatusComplete; diff --git a/reactos/drivers/net/tcpip/datalink/loopback.c b/reactos/drivers/net/tcpip/datalink/loopback.c index 309f98d082e..89a07abce5d 100644 --- a/reactos/drivers/net/tcpip/datalink/loopback.c +++ b/reactos/drivers/net/tcpip/datalink/loopback.c @@ -52,7 +52,7 @@ VOID RealTransmit( if (!NdisPacket) break; - LoopQueueHead = *(PNDIS_PACKET*)NdisPacket->MacReserved; + LoopQueueHead = *(PNDIS_PACKET*)NdisPacket->u.s3.MacReserved; KeReleaseSpinLockFromDpcLevel(&LoopLock); @@ -114,7 +114,7 @@ VOID LoopTransmit( AdjustPacket(NdisPacket, Offset, 0); PC(NdisPacket)->DLOffset = Offset; - pNdisPacket = (PNDIS_PACKET*)NdisPacket->MacReserved; + pNdisPacket = (PNDIS_PACKET*)NdisPacket->u.s3.MacReserved; *pNdisPacket = NULL; KeAcquireSpinLock(&LoopLock, &OldIrql); @@ -122,7 +122,7 @@ VOID LoopTransmit( /* Add packet to transmit queue */ if (LoopQueueHead) { /* Transmit queue is not empty */ - pNdisPacket = (PNDIS_PACKET*)LoopQueueTail->MacReserved; + pNdisPacket = (PNDIS_PACKET*)LoopQueueTail->u.s3.MacReserved; *pNdisPacket = NdisPacket; } else /* Transmit queue is empty */ diff --git a/reactos/drivers/net/tdi/Makefile b/reactos/drivers/net/tdi/Makefile index 8b8ada8c68c..94bd86bb0ed 100644 --- a/reactos/drivers/net/tdi/Makefile +++ b/reactos/drivers/net/tdi/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.5 2000/03/08 22:37:02 ea Exp $ +# $Id: Makefile,v 1.6 2000/08/05 18:01:56 dwelch Exp $ # # TDI.SYS build spec # @@ -16,7 +16,7 @@ OBJECTS = $(OBJECTS_CTE) $(OBJECTS_TDI) $(OBJECTS_MISC) all: $(TARGETNAME).sys -misc/$(TARGETNAME).coff: misc/$(TARGETNAME).rc ../../include/reactos/resource.h +misc/$(TARGETNAME).coff: misc/$(TARGETNAME).rc ../../../include/reactos/resource.h ifeq ($(DOSCLI),yes) CLEAN_FILES = \ diff --git a/reactos/drivers/net/tdi/misc/tdi.def b/reactos/drivers/net/tdi/misc/tdi.def index 0568b787738..76ce88f1f1b 100644 --- a/reactos/drivers/net/tdi/misc/tdi.def +++ b/reactos/drivers/net/tdi/misc/tdi.def @@ -1,4 +1,4 @@ -; $Id: tdi.def,v 1.2 1999/11/21 23:48:13 ea Exp $ +; $Id: tdi.def,v 1.3 2000/08/05 18:01:57 dwelch Exp $ ; ; TDI.SYS Kernel Module - ReactOS Operating System ; @@ -34,7 +34,7 @@ TdiDeregisterAddressChangeHandler@4 TdiDeregisterDeviceObject@4 TdiDeregisterNetAddress@4 TdiDeregisterNotificationHandler@4 -TdiInitialize@0 +TdiInitialize@4 TdiMapBuffer@4 TdiMapUserRequest@12 TdiOpenNetbiosAddress@16 diff --git a/reactos/drivers/net/tdi/misc/tdi.edf b/reactos/drivers/net/tdi/misc/tdi.edf index 2c001a443db..5d7e9bc9e80 100644 --- a/reactos/drivers/net/tdi/misc/tdi.edf +++ b/reactos/drivers/net/tdi/misc/tdi.edf @@ -1,4 +1,4 @@ -; $Id: tdi.edf,v 1.1 1999/11/21 23:48:13 ea Exp $ +; $Id: tdi.edf,v 1.2 2000/08/05 18:01:57 dwelch Exp $ ; ; TDI.SYS Kernel Module - ReactOS Operating System ; @@ -34,7 +34,7 @@ TdiDeregisterAddressChangeHandler=TdiDeregisterAddressChangeHandler@4 TdiDeregisterDeviceObject=TdiDeregisterDeviceObject@4 TdiDeregisterNetAddress=TdiDeregisterNetAddress@4 TdiDeregisterNotificationHandler=TdiDeregisterNotificationHandler@4 -TdiInitialize=TdiInitialize@0 +TdiInitialize=TdiInitialize@4 TdiMapBuffer=TdiMapBuffer@4 TdiMapUserRequest=TdiMapUserRequest@12 TdiOpenNetbiosAddress=TdiOpenNetbiosAddress@16 diff --git a/reactos/drivers/net/tdi/tdi/dereg.c b/reactos/drivers/net/tdi/tdi/dereg.c index 578106c0193..e5d68646222 100644 --- a/reactos/drivers/net/tdi/tdi/dereg.c +++ b/reactos/drivers/net/tdi/tdi/dereg.c @@ -1,8 +1,8 @@ -/* $Id: dereg.c,v 1.1 1999/11/28 07:59:29 ea Exp $ +/* $Id: dereg.c,v 1.2 2000/08/05 18:01:57 dwelch Exp $ * */ #include - +#include /* De-/Register Action IDs for TdiDeRegister */ @@ -10,7 +10,7 @@ typedef enum { R_NOTIFICATION_HANDLER = 0, - D_NOTIFICATION_HANDLER, + DT_NOTIFICATION_HANDLER, R_DEVICE_OBJECT, D_DEVICE_OBJECT, R_ADDRESS_CHANGE_HANDLER, @@ -40,7 +40,7 @@ STDCALL TdiRegisterAddressChangeHandler ( DWORD Unknown0, DWORD Unknown1, - DWORD Unknown2, + DWORD Unknown2 ) { NTSTATUS Status = STATUS_SUCCESS; @@ -83,7 +83,7 @@ TdiRegisterDeviceObject ( DeviceObject ); #endif - return = STATUS_NOT_IMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; } diff --git a/reactos/drivers/net/tdi/tdi/handler.c b/reactos/drivers/net/tdi/tdi/handler.c index d92a201f953..a18eb52a294 100644 --- a/reactos/drivers/net/tdi/tdi/handler.c +++ b/reactos/drivers/net/tdi/tdi/handler.c @@ -1,9 +1,9 @@ -/* $Id: handler.c,v 1.1 1999/11/20 20:41:29 ea Exp $ +/* $Id: handler.c,v 1.2 2000/08/05 18:01:57 dwelch Exp $ * * DESCRIPTION: Default TDI event handlers. */ #include - +#include /* ClientEventChainedReceiveDatagram */ diff --git a/reactos/drivers/net/tdi/tdi/obsolete.c b/reactos/drivers/net/tdi/tdi/obsolete.c index 82f8c5dbd9d..6b5a724d418 100644 --- a/reactos/drivers/net/tdi/tdi/obsolete.c +++ b/reactos/drivers/net/tdi/tdi/obsolete.c @@ -1,6 +1,9 @@ -/* $Id: obsolete.c,v 1.2 1999/11/21 23:48:14 ea Exp $ +/* $Id: obsolete.c,v 1.3 2000/08/05 18:01:57 dwelch Exp $ * */ + +#include + VOID STDCALL TdiMapBuffer ( diff --git a/reactos/drivers/net/tdi/tdi/stubs.c b/reactos/drivers/net/tdi/tdi/stubs.c index 5916d255634..4f78eb3132a 100644 --- a/reactos/drivers/net/tdi/tdi/stubs.c +++ b/reactos/drivers/net/tdi/tdi/stubs.c @@ -1,7 +1,9 @@ -/* $Id: stubs.c,v 1.3 1999/11/28 07:59:29 ea Exp $ + +/* $Id: stubs.c,v 1.4 2000/08/05 18:01:57 dwelch Exp $ * */ #include +#include VOID STDCALL diff --git a/reactos/include/ascii.h b/reactos/include/ascii.h index 3c065e1a7c7..d97cb38c1f0 100644 --- a/reactos/include/ascii.h +++ b/reactos/include/ascii.h @@ -2088,6 +2088,18 @@ GetStartupInfoA( LPSTARTUPINFOA lpStartupInfo ); +WINBASEAPI +HANDLE +WINAPI +FindFirstFileExA ( + LPCSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags + ); + HANDLE STDCALL FindFirstFileA( diff --git a/reactos/include/funcs.h b/reactos/include/funcs.h index b9fc4a24685..2501a4afe1b 100644 --- a/reactos/include/funcs.h +++ b/reactos/include/funcs.h @@ -335,6 +335,7 @@ extern "C" { #define GetFileAttributes GetFileAttributesW #define GetCompressedFileSize GetCompressedFileSizeW #define DeleteFile DeleteFileW +#define FindFirstFileEx FindFirstFileExW #define FindFirstFile FindFirstFileW #define FindNextFile FindNextFileW #define SearchPath SearchPathW @@ -736,6 +737,7 @@ extern "C" { #define GetFileAttributes GetFileAttributesA #define GetCompressedFileSize GetCompressedFileSizeA #define DeleteFile DeleteFileA +#define FindFirstFileEx FindFirstFileExA #define FindFirstFile FindFirstFileA #define FindNextFile FindNextFileA #define SearchPath SearchPathA diff --git a/reactos/include/napi/teb.h b/reactos/include/napi/teb.h index 741e3127b75..117314f29c5 100644 --- a/reactos/include/napi/teb.h +++ b/reactos/include/napi/teb.h @@ -77,6 +77,8 @@ typedef struct _PEB_LDR_DATA LIST_ENTRY InInitializationOrderModuleList; } PEB_LDR_DATA, *PPEB_LDR_DATA; +typedef VOID STDCALL (*PPEBLOCKROUTINE)(PVOID); + typedef struct _PEB { UCHAR InheritedAddressSpace; // 00h @@ -90,8 +92,8 @@ typedef struct _PEB PVOID SubSystemData; // 14h PVOID ProcessHeap; // 18h PVOID FastPebLock; // 1Ch - PVOID FastPebLockRoutine; // 20h - PVOID FastPebUnlockRoutine; // 24h + PPEBLOCKROUTINE FastPebLockRoutine; // 20h + PPEBLOCKROUTINE FastPebUnlockRoutine; // 24h ULONG EnvironmentUpdateCount; // 28h PVOID* KernelCallbackTable; // 2Ch PVOID EventLogSection; // 30h @@ -225,7 +227,7 @@ static inline PNT_TEB NtCurrentTeb(VOID) int x; __asm__ __volatile__("movl %%fs:0x18, %0\n\t" - : "=a" (x) + : "=g" (x) : /* no inputs */ ); diff --git a/reactos/include/net/ndis.h b/reactos/include/net/ndis.h index 639880913b7..811d9f3f1db 100644 --- a/reactos/include/net/ndis.h +++ b/reactos/include/net/ndis.h @@ -375,9 +375,9 @@ typedef struct _NDIS_RW_LOCK { KSPIN_LOCK SpinLock; PVOID Context; - }; + } s; UCHAR Reserved[16]; - }; + } u; NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS]; } NDIS_RW_LOCK, *PNDIS_RW_LOCK; @@ -508,7 +508,7 @@ typedef struct _NDIS_GUID { NDIS_OID Oid; NDIS_STATUS Status; - }; + } u; ULONG Size; ULONG Flags; } NDIS_GUID, *PNDIS_GUID; @@ -552,15 +552,15 @@ typedef struct _NDIS_PACKET { struct { UCHAR MiniportReserved[2*sizeof(PVOID)]; UCHAR WrapperReserved[2*sizeof(PVOID)]; - }; + } s1; struct { UCHAR MiniportReservedEx[3*sizeof(PVOID)]; UCHAR WrapperReservedEx[sizeof(PVOID)]; - }; + } s2; struct { UCHAR MacReserved[4*sizeof(PVOID)]; - }; - }; + } s3; + } u; ULONG_PTR Reserved[2]; UCHAR ProtocolReserved[1]; } NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET; @@ -569,7 +569,7 @@ typedef struct _NDIS_PACKET_OOB_DATA { union { ULONGLONG TimeToSend; ULONGLONG TimeSent; - }; + } u; ULONGLONG TimeReceived; UINT HeaderSize; UINT SizeMediaSpecificInfo; @@ -1105,7 +1105,7 @@ typedef struct _NDIS_IPSEC_PACKET_INFO ULONG NEXT_CRYPTO_DONE:1; ULONG CryptoStatus; } Receive; - }; + } u; } NDIS_IPSEC_PACKET_INFO, *PNDIS_IPSEC_PACKET_INFO; @@ -1473,6 +1473,7 @@ typedef VOID (*RECEIVE_COMPLETE_HANDLER)( /* Protocol characteristics for NDIS 3.0 protocols */ +#if 0 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { UCHAR MajorNdisVersion; @@ -1481,19 +1482,19 @@ typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { UINT Reserved; UINT Flags; - }; + } u1; OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; union { SEND_COMPLETE_HANDLER SendCompleteHandler; WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; - }; + } u2; union { TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; - }; + } u3; RESET_COMPLETE_HANDLER ResetCompleteHandler; REQUEST_COMPLETE_HANDLER RequestCompleteHandler; @@ -1501,13 +1502,49 @@ typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { RECEIVE_HANDLER ReceiveHandler; WAN_RECEIVE_HANDLER WanReceiveHandler; - }; + } u4; RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; STATUS_HANDLER StatusHandler; STATUS_COMPLETE_HANDLER StatusCompleteHandler; NDIS_STRING Name; } NDIS30_PROTOCOL_CHARACTERISTICS; - +#else +#define NDIS30_PROTOCOL_CHARACTERISTICS \ + UCHAR MajorNdisVersion; \ + UCHAR MinorNdisVersion; \ + union \ + { \ + UINT Reserved; \ + UINT Flags; \ + } u1; \ + OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \ + CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \ + union \ + { \ + SEND_COMPLETE_HANDLER SendCompleteHandler; \ + WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \ + } u2; \ + union \ + { \ + TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \ + WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \ + } u3; \ + RESET_COMPLETE_HANDLER ResetCompleteHandler; \ + REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \ + union \ + { \ + RECEIVE_HANDLER ReceiveHandler; \ + WAN_RECEIVE_HANDLER WanReceiveHandler; \ + } u4; \ + RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \ + STATUS_HANDLER StatusHandler; \ + STATUS_COMPLETE_HANDLER StatusCompleteHandler; \ + NDIS_STRING Name; +typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS_S +{ + NDIS30_PROTOCOL_CHARACTERISTICS; +} NDIS30_PROTOCOL_CHARACTERISTICS_S, *PNDIS30_PROTOCOL_CHARACTERISTICS_S; +#endif /* Prototypes for NDIS 4.0 protocol characteristics */ @@ -1539,7 +1576,7 @@ typedef VOID (*UNLOAD_PROTOCOL_HANDLER)( /* Protocol characteristics for NDIS 4.0 protocols */ - +#if 0 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { NDIS30_PROTOCOL_CHARACTERISTICS; @@ -1550,7 +1587,19 @@ typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS TRANSLATE_HANDLER TranslateHandler; UNLOAD_PROTOCOL_HANDLER UnloadHandler; } NDIS40_PROTOCOL_CHARACTERISTICS; - +#else +#define NDIS40_PROTOCOL_CHARACTERISTICS \ + NDIS30_PROTOCOL_CHARACTERISTICS; \ + RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ + BIND_HANDLER BindAdapterHandler; \ + UNBIND_HANDLER UnbindAdapterHandler; \ + TRANSLATE_HANDLER TranslateHandler; \ + UNLOAD_PROTOCOL_HANDLER UnloadHandler; +typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS_S +{ + NDIS40_PROTOCOL_CHARACTERISTICS; +} NDIS40_PROTOCOL_CHARACTERISTICS_S, *PNDIS40_PROTOCOL_CHARACTERISTICS_S; +#endif /* Prototypes for NDIS 5.0 protocol characteristics */ @@ -1578,7 +1627,7 @@ typedef VOID (*CO_AF_REGISTER_NOTIFY_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PCO_ADDRESS_FAMILY AddressFamily); - +#if 0 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS { NDIS40_PROTOCOL_CHARACTERISTICS; @@ -1590,18 +1639,39 @@ typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; } NDIS50_PROTOCOL_CHARACTERISTICS; - +#else +#define NDIS50_PROTOCOL_CHARACTERISTICS \ + NDIS40_PROTOCOL_CHARACTERISTICS; \ + PVOID ReservedHandlers[4]; \ + CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \ + CO_STATUS_HANDLER CoStatusHandler; \ + CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \ + CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; +typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS_S +{ + NDIS50_PROTOCOL_CHARACTERISTICS; +} NDIS50_PROTOCOL_CHARACTERISTICS_S, *PNDIS50_PROTOCOL_CHARACTERISTICS_S; +#endif #endif /* NDIS50 */ #ifndef NDIS50 #ifndef NDIS40 -typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS +{ + NDIS30_PROTOCOL_CHARACTERISTICS; +} NDIS_PROTOCOL_CHARACTERISTICS; #else /* NDIS40 */ -typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS +{ + NDIS40_PROTOCOL_CHARACTERISTICS; +} NDIS_PROTOCOL_CHARACTERISTICS; #endif /* NDIS40 */ #else /* NDIS50 */ -typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS +{ + NDIS50_PROTOCOL_CHARACTERISTICS; +} NDIS_PROTOCOL_CHARACTERISTICS; #endif /* NDIS50 */ typedef NDIS_PROTOCOL_CHARACTERISTICS *PNDIS_PROTOCOL_CHARACTERISTICS; @@ -3971,6 +4041,7 @@ typedef NDIS_STATUS (*W_TRANSFER_DATA_HANDLER)( typedef NDIS_STATUS (*WM_TRANSFER_DATA_HANDLER)( VOID); +#if 0 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { UCHAR MajorNdisVersion; @@ -3990,15 +4061,45 @@ typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { W_SEND_HANDLER SendHandler; WM_SEND_HANDLER WanSendHandler; - }; + } u1; W_SET_INFORMATION_HANDLER SetInformationHandler; union { W_TRANSFER_DATA_HANDLER TransferDataHandler; WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; - }; + } u2; } NDIS30_MINIPORT_CHARACTERISTICS; - +#else +#define NDIS30_MINIPORT_CHARACTERISTICS \ + UCHAR MajorNdisVersion; \ + UCHAR MinorNdisVersion; \ + UINT Reserved; \ + W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \ + W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \ + W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \ + W_HALT_HANDLER HaltHandler; \ + W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \ + W_INITIALIZE_HANDLER InitializeHandler; \ + W_ISR_HANDLER ISRHandler; \ + W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \ + W_RECONFIGURE_HANDLER ReconfigureHandler; \ + W_RESET_HANDLER ResetHandler; \ + union \ + { \ + W_SEND_HANDLER SendHandler; \ + WM_SEND_HANDLER WanSendHandler; \ + } u1; \ + W_SET_INFORMATION_HANDLER SetInformationHandler; \ + union \ + { \ + W_TRANSFER_DATA_HANDLER TransferDataHandler; \ + WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; \ + } u2; +typedef struct _NDIS30_MINIPORT_CHARACTERISTICS_S +{ + NDIS30_MINIPORT_CHARACTERISTICS; +} NDIS30_MINIPORT_CHARACTERISTICS_S, *PSNDIS30_MINIPORT_CHARACTERISTICS_S; +#endif /* Extensions for NDIS 4.0 miniports */ #ifdef NDIS40 @@ -4019,6 +4120,7 @@ typedef VOID (*W_ALLOCATE_COMPLETE_HANDLER)( IN ULONG Length, IN PVOID Context); +#if 0 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { NDIS30_MINIPORT_CHARACTERISTICS; @@ -4027,6 +4129,17 @@ typedef struct _NDIS40_MINIPORT_CHARACTERISTICS W_SEND_PACKETS_HANDLER SendPacketsHandler; W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; } NDIS40_MINIPORT_CHARACTERISTICS; +#else +#define NDIS40_MINIPORT_CHARACTERISTICS \ + NDIS30_MINIPORT_CHARACTERISTICS; \ + W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ + W_SEND_PACKETS_HANDLER SendPacketsHandler; \ + W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; +typedef struct _NDIS40_MINIPORT_CHARACTERISTICS_S +{ + NDIS40_MINIPORT_CHARACTERISTICS; +} NDIS40_MINIPORT_CHARACTERISTICS_S, *PSNDIS40_MINIPORT_CHARACTERISTICS_S; +#endif #endif /* NDIS40 */ @@ -4059,6 +4172,7 @@ typedef NDIS_STATUS (*W_CO_REQUEST_HANDLER)( IN NDIS_HANDLE MiniportVcContext OPTIONAL, IN OUT PNDIS_REQUEST NdisRequest); +#if 0 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { NDIS40_MINIPORT_CHARACTERISTICS; @@ -4070,18 +4184,41 @@ typedef struct _NDIS50_MINIPORT_CHARACTERISTICS W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; W_CO_REQUEST_HANDLER CoRequestHandler; } NDIS50_MINIPORT_CHARACTERISTICS; +#else +#define NDIS50_MINIPORT_CHARACTERISTICS \ + NDIS40_MINIPORT_CHARACTERISTICS; \ + W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ + W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ + W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ + W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ + W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ + W_CO_REQUEST_HANDLER CoRequestHandler; +typedef struct _NDIS50_MINIPORT_CHARACTERISTICS_S +{ + NDIS50_MINIPORT_CHARACTERISTICS; +} NDIS50_MINIPORT_CHARACTERISTICS_S, *PSNDIS50_MINIPORT_CHARACTERISTICS_S; +#endif #endif /* NDIS50 */ #ifndef NDIS50 #ifndef NDIS40 -typedef struct _NDIS30_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; +typedef struct _NDIS_MINIPORT_CHARACTERISTICS +{ + NDIS30_MINIPORT_CHARACTERISTICS; +} NDIS_MINIPORT_CHARACTERISTICS; #else /* NDIS40 */ -typedef struct _NDIS40_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; +typedef struct _NDIS_MINIPORT_CHARACTERISTICS +{ + NDIS40_MINIPORT_CHARACTERISTICS; +} NDIS_MINIPORT_CHARACTERISTICS; #endif /* NDIS40 */ #else /* NDIS50 */ -typedef struct _NDIS50_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; +typedef struct _NDIS_MINIPORT_CHARACTERISTICS +{ + NDIS50_MINIPORT_CHARACTERISTICS; +} NDIS_MINIPORT_CHARACTERISTICS; #endif /* NDIS50 */ typedef NDIS_MINIPORT_CHARACTERISTICS *PNDIS_MINIPORT_CHARACTERISTICS; diff --git a/reactos/include/ntdll/ldr.h b/reactos/include/ntdll/ldr.h index fd56e68954c..d8406b37c74 100644 --- a/reactos/include/ntdll/ldr.h +++ b/reactos/include/ntdll/ldr.h @@ -27,16 +27,23 @@ LdrLoadDll (PDLL* Dll,PCHAR Name); NTSTATUS LdrUnloadDll(PDLL Dll); - -PVOID -LdrGetExportByOrdinal (PDLL Module, ULONG Ordinal ); - -PVOID -LdrGetExportByName (PDLL Module, PUCHAR SymbolName ); - NTSTATUS STDCALL LdrDisableThreadCalloutsForDll ( PVOID IN ImageBase, BOOLEAN IN Disable ); + +NTSTATUS STDCALL +LdrGetProcedureAddress (IN PVOID BaseAddress, + IN PANSI_STRING Name, + IN ULONG Ordinal, + OUT PVOID *ProcedureAddress); + +VOID STDCALL +LdrInitializeThunk (ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4); + +/* EOF */ diff --git a/reactos/include/reactos/version.h b/reactos/include/reactos/version.h index a8a3481be4e..eca8b230a40 100644 --- a/reactos/include/reactos/version.h +++ b/reactos/include/reactos/version.h @@ -1,4 +1,4 @@ -/* $Id: version.h,v 1.3 2000/01/19 07:05:04 rex Exp $ +/* $Id: version.h,v 1.4 2000/08/05 18:01:48 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -16,11 +16,11 @@ #define KERNEL_VERSION_MAJOR 0 #define KERNEL_VERSION_MINOR 0 -#define KERNEL_VERSION_PATCH_LEVEL 15 +#define KERNEL_VERSION_PATCH_LEVEL 16 /* Edit each time a new release is out: format is YYYYMMDD (UTC) */ -#define KERNEL_RELEASE_DATE 20000118L +#define KERNEL_RELEASE_DATE 20000805L -#define KERNEL_VERSION "0.0.15" +#define KERNEL_VERSION "0.0.16" #endif diff --git a/reactos/include/structs.h b/reactos/include/structs.h index c8f6f0a3921..b0cefd3a8ed 100644 --- a/reactos/include/structs.h +++ b/reactos/include/structs.h @@ -1930,6 +1930,25 @@ typedef struct _FIND_NAME_HEADER { UCHAR unique_group; } FIND_NAME_HEADER; +typedef +enum _FINDEX_INFO_LEVELS +{ + FindExInfoStandard, + FindExInfoMaxInfoLevel +} FINDEX_INFO_LEVELS; + +typedef +enum _FINDEX_SEARCH_OPS +{ + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp + +} FINDEX_SEARCH_OPS; + +#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001 + typedef struct { DWORD lStructSize; HWND hwndOwner; @@ -4217,3 +4236,4 @@ typedef struct #endif /* _GNU_H_WINDOWS32_STRUCTURES */ + diff --git a/reactos/include/unicode.h b/reactos/include/unicode.h index e101a924085..0250c69e171 100644 --- a/reactos/include/unicode.h +++ b/reactos/include/unicode.h @@ -2103,6 +2103,18 @@ GetStartupInfoW( LPSTARTUPINFOW lpStartupInfo ); +WINBASEAPI +HANDLE +WINAPI +FindFirstFileExW ( + LPCWSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags + ); + HANDLE STDCALL FindFirstFileW( diff --git a/reactos/lib/crtdll/makefile b/reactos/lib/crtdll/makefile index 5f069c1d12a..51ebd3b8efd 100644 --- a/reactos/lib/crtdll/makefile +++ b/reactos/lib/crtdll/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.35 2000/01/20 22:49:12 ekohl Exp $ +# $Id: makefile,v 1.36 2000/08/05 18:01:48 dwelch Exp $ # # ReactOS Operating System # @@ -163,7 +163,7 @@ CLEAN_FILES = assert/*.o conio/*.o ctype/*.o direct/*.o dirent/*.o \ math/*.o mbstring/*.o misc/*.o process/*.o quad/*.o search/*.o \ setjmp/*.o stdio/*.o stdlib/*.o string/*.o sys_stat/*.o tchar/*.o \ time/*.o wchar/*.o $(TARGET).a $(TARGET).o $(TARGET).dll $(TARGET).sym \ - $(TARGET).coff + $(TARGET).coff $(SIGNAL_OBJECTS) endif $(TARGET).coff: $(TARGET).rc ../../include/reactos/resource.h diff --git a/reactos/lib/gdi32/makefile b/reactos/lib/gdi32/makefile index 23c457e9965..10b6cdbf2be 100644 --- a/reactos/lib/gdi32/makefile +++ b/reactos/lib/gdi32/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.12 2000/07/07 10:30:54 dwelch Exp $ +# $Id: makefile,v 1.13 2000/08/05 18:01:48 dwelch Exp $ # # Makefile for ReactOS gdi32.dll # @@ -67,10 +67,10 @@ $(TARGET).dll: $(DLLMAIN) $(OBJECTS) $(TARGET).def $(NM) --numeric-sort $(TARGET).dll > $(TARGET).sym ifeq ($(DOSCLI),yes) -CLEAN_FILES = *.a *.o *.coff *.sym *.tmp *.dll main\*.o misc\*.o +CLEAN_FILES = *.a *.o *.coff *.sym *.tmp *.dll main\*.o misc\*.o objects\*.o else -CLEAN_FILES = *.a *.o *.coff *.sym *.tmp *.dll main/*.o misc/*.o -endif +CLEAN_FILES = *.a *.o *.coff *.sym *.tmp *.dll main/*.o misc/*.o objects/*.o +endif clean: $(CLEAN_FILES:%=%_clean) diff --git a/reactos/lib/kernel32/file/find.c b/reactos/lib/kernel32/file/find.c index e352d38b840..295e4908097 100644 --- a/reactos/lib/kernel32/file/find.c +++ b/reactos/lib/kernel32/file/find.c @@ -1,4 +1,4 @@ -/* $Id: find.c,v 1.26 2000/06/03 14:47:32 ea Exp $ +/* $Id: find.c,v 1.27 2000/08/05 18:01:49 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -446,4 +446,37 @@ FindNextFileW ( return TRUE; } + +HANDLE +STDCALL +FindFirstFileExW ( + LPCWSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags + ) +{ + /* FIXME */ + return (HANDLE) 0; +} + + +HANDLE +STDCALL +FindFirstFileExA ( + LPCSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags + ) +{ + /* FIXME */ + return (HANDLE) 0; +} + + /* EOF */ diff --git a/reactos/lib/kernel32/kernel32.def b/reactos/lib/kernel32/kernel32.def index 7d34a779f3f..45b2b7602f8 100644 --- a/reactos/lib/kernel32/kernel32.def +++ b/reactos/lib/kernel32/kernel32.def @@ -49,6 +49,7 @@ BuildCommDCBAndTimeoutsW@12 BuildCommDCBW@8 CallNamedPipeA@28 CallNamedPipeW@28 +CancelWaitableTimer@4 ClearCommBreak@4 ClearCommError@12 CloseConsoleHandle@4 @@ -95,6 +96,8 @@ CreateSemaphoreW@16 CreateTapePartition@16 CreateThread@24 CreateVirtualBuffer@12 +CreateWaitableTimerA@12 +CreateWaitableTimerW@12 DebugActiveProcess@4 DebugBreak@0 DefineDosDeviceA@12 @@ -390,8 +393,10 @@ HeapValidate@12 HeapWalk@8 InitAtomTable@4 InitializeCriticalSection@4 +InterlockedCompareExchange@12 InterlockedDecrement@4 InterlockedExchange@8 +InterlockedExchangeAdd@8 InterlockedIncrement@4 InvalidateConsoleDIBits@8 IsBadCodePtr@4 @@ -449,6 +454,8 @@ OpenProcess@12 OpenProfileUserMapping@0 OpenSemaphoreA@12 OpenSemaphoreW@12 +OpenWaitableTimerA@12 +OpenWaitableTimerW@12 OutputDebugStringA@4 OutputDebugStringW@4 PeekConsoleInputA@16 @@ -566,12 +573,14 @@ SetUnhandledExceptionFilter@4 SetVDMCurrentDirectories@8 SetVolumeLabelA@8 SetVolumeLabelW@8 +SetWaitableTimer@24 SetupComm@12 ShowConsoleCursor@8 SizeofResource@8 Sleep@4 SleepEx@8 SuspendThread@4 +SwitchToThread@0 SystemTimeToFileTime@8 SystemTimeToTzSpecificLocalTime@12 TerminateProcess@8 @@ -583,6 +592,7 @@ TlsSetValue@8 TransactNamedPipe@28 TransmitCommChar@8 TrimVirtualBuffer@4 +TryEnterCriticalSection@4 UnhandledExceptionFilter@4 UnlockFile@20 UnlockFileEx@20 @@ -595,8 +605,10 @@ VerLanguageNameA@12 VerLanguageNameW@12 VerifyConsoleIoHandle@4 VirtualAlloc@16 +VirtualAllocEx@20 VirtualBufferExceptionHandler@12 VirtualFree@12 +VirtualFreeEx@16 VirtualLock@8 VirtualProtect@16 VirtualProtectEx@20 diff --git a/reactos/lib/kernel32/kernel32.edf b/reactos/lib/kernel32/kernel32.edf index b364532d8a9..72a3ee8fa83 100644 --- a/reactos/lib/kernel32/kernel32.edf +++ b/reactos/lib/kernel32/kernel32.edf @@ -1,4 +1,4 @@ -; $Id: kernel32.edf,v 1.6 2000/04/14 01:46:20 ekohl Exp $ +; $Id: kernel32.edf,v 1.7 2000/08/05 18:01:49 dwelch Exp $ ; ; kernel32.edf ; @@ -53,6 +53,7 @@ BuildCommDCBAndTimeoutsW=BuildCommDCBAndTimeoutsW@12 BuildCommDCBW=BuildCommDCBW@8 CallNamedPipeA=CallNamedPipeA@28 CallNamedPipeW=CallNamedPipeW@28 +CancelWaitableTimer=CancelWaitableTimer@4 ClearCommBreak=ClearCommBreak@4 ClearCommError=ClearCommError@12 CloseConsoleHandle=CloseConsoleHandle@4 @@ -99,6 +100,8 @@ CreateSemaphoreW=CreateSemaphoreW@16 CreateTapePartition=CreateTapePartition@16 CreateThread=CreateThread@24 CreateVirtualBuffer=CreateVirtualBuffer@12 +CreateWaitableTimerA=CreateWaitableTimerA@12 +CreateWaitableTimerW=CreateWaitableTimerW@12 DebugActiveProcess=DebugActiveProcess@4 DebugBreak=DebugBreak@0 DefineDosDeviceA=DefineDosDeviceA@12 @@ -395,8 +398,10 @@ HeapValidate=HeapValidate@12 HeapWalk=HeapWalk@8 InitAtomTable=InitAtomTable@4 InitializeCriticalSection=InitializeCriticalSection@4 +InterlockedCompareExchange=InterlockedCompareExchange@12 InterlockedDecrement=InterlockedDecrement@4 InterlockedExchange=InterlockedExchange@8 +InterlockedExchangeAdd=InterlockedExchangeAdd@8 InterlockedIncrement=InterlockedIncrement@4 InvalidateConsoleDIBits=InvalidateConsoleDIBits@8 IsBadCodePtr=IsBadCodePtr@4 @@ -417,6 +422,7 @@ LeaveCriticalSection=LeaveCriticalSection@4 LoadLibraryA=LoadLibraryA@4 LoadLibraryExA=LoadLibraryExA@12 LoadLibraryExW=LoadLibraryExW@12 +LoadLibraryW=LoadLibraryW@4 LoadModule=LoadModule@8 LoadResource=LoadResource@8 LocalAlloc=LocalAlloc@8 @@ -453,6 +459,8 @@ OpenProcess=OpenProcess@12 OpenProfileUserMapping=OpenProfileUserMapping@0 OpenSemaphoreA=OpenSemaphoreA@12 OpenSemaphoreW=OpenSemaphoreW@12 +OpenWaitableTimerA=OpenWaitableTimerA@12 +OpenWaitableTimerW=OpenWaitableTimerW@12 OutputDebugStringA=OutputDebugStringA@4 OutputDebugStringW=OutputDebugStringW@4 PeekConsoleInputA=PeekConsoleInputA@16 @@ -570,12 +578,14 @@ SetUnhandledExceptionFilter=SetUnhandledExceptionFilter@4 SetVDMCurrentDirectories=SetVDMCurrentDirectories@8 SetVolumeLabelA=SetVolumeLabelA@8 SetVolumeLabelW=SetVolumeLabelW@8 +SetWaitableTimer=SetWaitableTimer@24 SetupComm=SetupComm@12 ShowConsoleCursor=ShowConsoleCursor@8 SizeofResource=SizeofResource@8 Sleep=Sleep@4 SleepEx=SleepEx@8 SuspendThread=SuspendThread@4 +SwitchToThread=SwitchToThread@0 SystemTimeToFileTime=SystemTimeToFileTime@8 SystemTimeToTzSpecificLocalTime=SystemTimeToTzSpecificLocalTime@12 TerminateProcess=TerminateProcess@8 @@ -587,6 +597,7 @@ TlsSetValue=TlsSetValue@8 TransactNamedPipe=TransactNamedPipe@28 TransmitCommChar=TransmitCommChar@8 TrimVirtualBuffer=TrimVirtualBuffer@4 +TryEnterCriticalSection=TryEnterCriticalSection@4 UnhandledExceptionFilter=UnhandledExceptionFilter@4 UnlockFile=UnlockFile@20 UnlockFileEx=UnlockFileEx@20 @@ -599,8 +610,10 @@ VerLanguageNameA=VerLanguageNameA@12 VerLanguageNameW=VerLanguageNameW@12 VerifyConsoleIoHandle=VerifyConsoleIoHandle@4 VirtualAlloc=VirtualAlloc@16 +VirtualAllocEx=VirtualAllocEx@20 VirtualBufferExceptionHandler=VirtualBufferExceptionHandler@12 VirtualFree=VirtualFree@12 +VirtualFreeEx=VirtualFreeEx@16 VirtualLock=VirtualLock@8 VirtualProtect=VirtualProtect@16 VirtualProtectEx=VirtualProtectEx@20 diff --git a/reactos/lib/kernel32/makefile b/reactos/lib/kernel32/makefile index d694bddfadb..1ad673d696f 100644 --- a/reactos/lib/kernel32/makefile +++ b/reactos/lib/kernel32/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.34 2000/05/13 13:50:56 dwelch Exp $ +# $Id: makefile,v 1.35 2000/08/05 18:01:49 dwelch Exp $ # # ReactOS Operating System # @@ -60,8 +60,10 @@ NLS_OBJECTS = nls/codepage.o nls/cpmisc.o nls/cptable.o\ THREAD_OBJECTS = thread/thread.o thread/tls.o -PROCESS_OBJECTS = process/proc.o process/cmdline.o process/create.o \ - process/lib.o +PROCESS_OBJECTS = \ + process/proc.o \ + process/cmdline.o \ + process/create.o STRING_OBJECTS = string/lstring.o diff --git a/reactos/lib/kernel32/misc/ldr.c b/reactos/lib/kernel32/misc/ldr.c index 2f0f8e79bab..da50f102c1f 100644 --- a/reactos/lib/kernel32/misc/ldr.c +++ b/reactos/lib/kernel32/misc/ldr.c @@ -1,4 +1,4 @@ -/* $Id: ldr.c,v 1.6 2000/07/01 17:07:00 ea Exp $ +/* $Id: ldr.c,v 1.7 2000/08/05 18:01:50 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT : ReactOS user mode libraries @@ -129,12 +129,25 @@ FARPROC STDCALL GetProcAddress( HMODULE hModule, LPCSTR lpProcName ) { - FARPROC fnExp; + ANSI_STRING ProcedureName; + FARPROC fnExp = NULL; - if ( HIWORD(lpProcName ) != 0 ) - fnExp = LdrGetExportByName (hModule,(LPSTR)lpProcName); + if (HIWORD(lpProcName) != 0) + { + RtlInitAnsiString (&ProcedureName, + (LPSTR)lpProcName); + LdrGetProcedureAddress ((PVOID)hModule, + &ProcedureName, + 0, + (PVOID*)&fnExp); + } else - fnExp = LdrGetExportByOrdinal (hModule,(ULONG)lpProcName); + { + LdrGetProcedureAddress ((PVOID)hModule, + NULL, + (ULONG)lpProcName, + (PVOID*)&fnExp); + } return fnExp; } diff --git a/reactos/lib/kernel32/synch/timer.c b/reactos/lib/kernel32/synch/timer.c index 6836189f5ec..af5ab37be2b 100644 --- a/reactos/lib/kernel32/synch/timer.c +++ b/reactos/lib/kernel32/synch/timer.c @@ -1,4 +1,4 @@ -/* $Id: timer.c,v 1.5 2000/07/01 17:07:02 ea Exp $ +/* $Id: timer.c,v 1.6 2000/08/05 18:01:50 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -16,6 +16,7 @@ /* FUNCTIONS *****************************************************************/ HANDLE +STDCALL CreateWaitableTimerW ( LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, @@ -51,6 +52,7 @@ CreateWaitableTimerW ( HANDLE +STDCALL CreateWaitableTimerA ( LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, @@ -78,6 +80,7 @@ CreateWaitableTimerA ( HANDLE +STDCALL OpenWaitableTimerW ( DWORD dwDesiredAccess, WINBOOL bInheritHandle, @@ -112,6 +115,7 @@ OpenWaitableTimerW ( HANDLE +STDCALL OpenWaitableTimerA ( DWORD dwDesiredAccess, WINBOOL bInheritHandle, @@ -138,7 +142,7 @@ OpenWaitableTimerA ( } -WINBOOL SetWaitableTimer( +WINBOOL STDCALL SetWaitableTimer( HANDLE hTimer, LARGE_INTEGER *pDueTime, LONG lPeriod, @@ -161,7 +165,7 @@ WINBOOL SetWaitableTimer( return TRUE; } -WINBOOL CancelWaitableTimer(HANDLE hTimer) +WINBOOL STDCALL CancelWaitableTimer(HANDLE hTimer) { NTSTATUS errCode; BOOLEAN CurrentState; diff --git a/reactos/lib/ntdll/def/ntdll.def b/reactos/lib/ntdll/def/ntdll.def index c3a5a37e612..a722c5f339b 100644 --- a/reactos/lib/ntdll/def/ntdll.def +++ b/reactos/lib/ntdll/def/ntdll.def @@ -1,4 +1,4 @@ -; $Id: ntdll.def,v 1.57 2000/07/06 14:34:48 dwelch Exp $ +; $Id: ntdll.def,v 1.58 2000/08/05 18:01:51 dwelch Exp $ ; ; ReactOS Operating System ; @@ -38,8 +38,8 @@ LdrDisableThreadCalloutsForDll@8 ;LdrFindResourceDirectory_U LdrFindResource_U ;LdrGetDllHandle -;LdrGetProcedureAddress -;LdrInitializeThunk +LdrGetProcedureAddress@16 +LdrInitializeThunk@16 LdrLoadDll ;LdrProcessRelocationBlock ;LdrQueryImageFileExecutionOptions @@ -929,5 +929,4 @@ wcsstr wcstol wcstombs wcstoul -LdrGetExportByName -LdrGetExportByOrdinal +;EOF diff --git a/reactos/lib/ntdll/def/ntdll.edf b/reactos/lib/ntdll/def/ntdll.edf index e560627a2a2..013b047ae09 100644 --- a/reactos/lib/ntdll/def/ntdll.edf +++ b/reactos/lib/ntdll/def/ntdll.edf @@ -1,4 +1,4 @@ -; $Id: ntdll.edf,v 1.46 2000/07/06 14:34:48 dwelch Exp $ +; $Id: ntdll.edf,v 1.47 2000/08/05 18:01:51 dwelch Exp $ ; ; ReactOS Operating System ; @@ -38,8 +38,8 @@ LdrDisableThreadCalloutsForDll=LdrDisableThreadCalloutsForDll@8 ;LdrFindResourceDirectory_U LdrFindResource_U ;LdrGetDllHandle -;LdrGetProcedureAddress -;LdrInitializeThunk +LdrGetProcedureAddress=LdrGetProcedureAddress@16 +LdrInitializeThunk=LdrInitializeThunk@16 LdrLoadDll ;LdrProcessRelocationBlock ;LdrQueryImageFileExecutionOptions @@ -775,5 +775,4 @@ wcsstr wcstol wcstombs wcstoul -LdrGetExportByName -LdrGetExportByOrdinal +;EOF diff --git a/reactos/lib/ntdll/ldr/startup.c b/reactos/lib/ntdll/ldr/startup.c index ed55f0184d0..fbf2286e0f2 100644 --- a/reactos/lib/ntdll/ldr/startup.c +++ b/reactos/lib/ntdll/ldr/startup.c @@ -1,4 +1,4 @@ -/* $Id: startup.c,v 1.26 2000/07/06 14:34:49 dwelch Exp $ +/* $Id: startup.c,v 1.27 2000/08/05 18:01:51 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -36,7 +36,11 @@ ULONG NtGlobalFlag = 0; /* FUNCTIONS *****************************************************************/ -VOID LdrStartup(VOID) +VOID STDCALL +LdrInitializeThunk (ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4) { PEPFUNC EntryPoint; PIMAGE_DOS_HEADER PEDosHeader; @@ -45,7 +49,7 @@ VOID LdrStartup(VOID) PVOID ImageBase; PPEB Peb; - DPRINT("LdrStartup()\n"); + DPRINT("LdrInitializeThunk()\n"); LdrDllListHead.BaseAddress = (PVOID)&_image_base__; LdrDllListHead.Prev = &LdrDllListHead; @@ -111,8 +115,8 @@ VOID LdrStartup(VOID) /* initalize peb lock support */ RtlInitializeCriticalSection (&PebLock); Peb->FastPebLock = &PebLock; - Peb->FastPebLockRoutine = RtlEnterCriticalSection; - Peb->FastPebUnlockRoutine = RtlLeaveCriticalSection; + Peb->FastPebLockRoutine = (PPEBLOCKROUTINE)RtlEnterCriticalSection; + Peb->FastPebUnlockRoutine = (PPEBLOCKROUTINE)RtlLeaveCriticalSection; EntryPoint = LdrPEStartup((PVOID)ImageBase, NULL); if (EntryPoint == NULL) diff --git a/reactos/lib/ntdll/ldr/utils.c b/reactos/lib/ntdll/ldr/utils.c index f141068e1ab..f18476bb92f 100644 --- a/reactos/lib/ntdll/ldr/utils.c +++ b/reactos/lib/ntdll/ldr/utils.c @@ -1,4 +1,4 @@ -/* $Id: utils.c,v 1.27 2000/07/01 17:06:22 ea Exp $ +/* $Id: utils.c,v 1.28 2000/08/05 18:01:51 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -67,13 +67,12 @@ NTSTATUS LdrLoadDll (PDLL* Dll, PIMAGE_DOS_HEADER DosHeader; NTSTATUS Status; PIMAGE_NT_HEADERS NTHeaders; - PEPFUNC DllStartupAddr; ULONG ImageSize; ULONG InitialViewSize; PVOID ImageBase; HANDLE FileHandle; HANDLE SectionHandle; - PDLLMAIN_FUNC Entrypoint; + PDLLMAIN_FUNC Entrypoint = NULL; if ( Dll == NULL ) return -1; @@ -183,11 +182,6 @@ NTSTATUS LdrLoadDll (PDLL* Dll, DPRINT("ImageBase 0x%08x\n", ImageBase); - DllStartupAddr = - (PEPFUNC) ( - ImageBase - + NTHeaders->OptionalHeader.AddressOfEntryPoint - ); /* * Create a section for NTDLL. */ @@ -427,7 +421,7 @@ NTSTATUS LdrMapSections(HANDLE ProcessHandle, * */ -PVOID +static PVOID LdrGetExportByOrdinal ( PDLL Module, ULONG Ordinal @@ -480,7 +474,7 @@ LdrGetExportByOrdinal ( * */ -PVOID +static PVOID LdrGetExportByName ( PDLL Module, PUCHAR SymbolName @@ -819,7 +813,7 @@ PEPFUNC LdrPEStartup (PVOID ImageBase, HANDLE SectionHandle) { NTSTATUS Status; - PEPFUNC EntryPoint; + PEPFUNC EntryPoint = NULL; PIMAGE_DOS_HEADER DosHeader; PIMAGE_NT_HEADERS NTHeaders; @@ -876,8 +870,11 @@ PEPFUNC LdrPEStartup (PVOID ImageBase, /* * Compute the DLL's entry point's address. */ - EntryPoint = (PEPFUNC) (ImageBase + if (NTHeaders->OptionalHeader.AddressOfEntryPoint != 0) + { + EntryPoint = (PEPFUNC) (ImageBase + NTHeaders->OptionalHeader.AddressOfEntryPoint); + } DPRINT("LdrPEStartup() = %x\n",EntryPoint); return EntryPoint; } @@ -1091,4 +1088,59 @@ LdrDisableThreadCalloutsForDll ( } +NTSTATUS STDCALL +LdrGetProcedureAddress (IN PVOID BaseAddress, + IN PANSI_STRING Name, + IN ULONG Ordinal, + OUT PVOID *ProcedureAddress) +{ + PIMAGE_EXPORT_DIRECTORY ExportDir; + PUSHORT OrdinalPtr; + PULONG NamePtr; + PULONG AddressPtr; + ULONG i = 0; + + /* Get the pointer to the export directory */ + ExportDir = (PIMAGE_EXPORT_DIRECTORY) + RtlImageDirectoryEntryToData (BaseAddress, + TRUE, + IMAGE_DIRECTORY_ENTRY_EXPORT, + &i); + + if (!ExportDir || !i || !ProcedureAddress) + { + return STATUS_INVALID_PARAMETER; + } + + AddressPtr = (PULONG)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfFunctions); + if (Name && Name->Length) + { + /* by name */ + OrdinalPtr = (PUSHORT)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfNameOrdinals); + NamePtr = (PULONG)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfNames); + for( i = 0; i < ExportDir->NumberOfNames; i++, NamePtr++, OrdinalPtr++) + { + if (!_strnicmp(Name->Buffer, (char*)(BaseAddress + *NamePtr), Name->Length)) + { + *ProcedureAddress = (PVOID)((ULONG)BaseAddress + (ULONG)AddressPtr[*OrdinalPtr]); + return STATUS_SUCCESS; + } + } + DbgPrint("LdrGetProcedureAddress: Can't resolve symbol '%Z'\n", Name); + } + else + { + /* by ordinal */ + Ordinal &= 0x0000FFFF; + if (Ordinal - ExportDir->Base < ExportDir->NumberOfFunctions) + { + *ProcedureAddress = (PVOID)((ULONG)BaseAddress + (ULONG)AddressPtr[Ordinal - ExportDir->Base]); + return STATUS_SUCCESS; + } + DbgPrint("LdrGetProcedureAddress: Can't resolve symbol @%d\n", Ordinal); + } + + return STATUS_PROCEDURE_NOT_FOUND; +} + /* EOF */ diff --git a/reactos/lib/ntdll/makefile b/reactos/lib/ntdll/makefile index b9d94861dce..3c91ea85c18 100644 --- a/reactos/lib/ntdll/makefile +++ b/reactos/lib/ntdll/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.49 2000/07/19 14:18:17 dwelch Exp $ +# $Id: makefile,v 1.50 2000/08/05 18:01:50 dwelch Exp $ # # ReactOS Operating System # @@ -88,7 +88,7 @@ $(TARGET).dll: $(DLLMAIN) $(OBJECTS) def/ntdll.def def/ntdll.edf -mdll \ -o $(TARGET).dll \ $(TARGET).o \ - -Wl,--entry=_LdrStartup \ + -Wl,--entry=_LdrInitializeThunk@16 \ -Wl,--image-base,$(IMAGE_BASE) \ -Wl,--file-alignment,0x1000 \ -Wl,--section-alignment,0x1000 \ @@ -121,6 +121,6 @@ else $(CP) $(TARGET).dll ../../$(DIST_DIR)/dlls/$(TARGET).dll endif -WITH_DEBUGGING=yes +WITH_DEBUGGING = yes #WARNINGS_ARE_ERRORS = yes include ../../rules.mak diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index 9480e6aabb2..53a7c3790ca 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -1,4 +1,4 @@ -/* $Id: critical.c,v 1.7 2000/06/29 23:35:29 dwelch Exp $ +/* $Id: critical.c,v 1.8 2000/08/05 18:01:52 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -19,8 +19,7 @@ /* shouldn't these have correct Rtl equivalents? I just copied from kernel32 */ -PVOID -STDCALL +PVOID STDCALL InterlockedCompareExchange( PVOID *Destination, PVOID Exchange, @@ -37,8 +36,7 @@ InterlockedCompareExchange( } -LONG -STDCALL +LONG STDCALL InterlockedIncrement(PLONG Addend) { long ret = 0; @@ -57,8 +55,7 @@ InterlockedIncrement(PLONG Addend) return ret; } -LONG -STDCALL +LONG STDCALL InterlockedDecrement(PLONG lpAddend) { long ret; @@ -79,76 +76,147 @@ InterlockedDecrement(PLONG lpAddend) } -VOID -STDCALL +VOID STDCALL RtlDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { NtClose(lpCriticalSection->LockSemaphore); lpCriticalSection->Reserved = -1; } -VOID -STDCALL +VOID STDCALL RtlEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { HANDLE Thread = (HANDLE)NtCurrentTeb()->Cid.UniqueThread; ULONG ret; - if( (ret = InterlockedIncrement(&(lpCriticalSection->LockCount) )) != 1 ) { - if (lpCriticalSection->OwningThread != Thread ) { - NtWaitForSingleObject( lpCriticalSection->LockSemaphore, 0, FALSE ); - lpCriticalSection->OwningThread = Thread; - } - } + + if (InterlockedIncrement(&lpCriticalSection->LockCount)) + { + NTSTATUS Status; + + if (lpCriticalSection->OwningThread == Thread) + { + lpCriticalSection->RecursionCount++; + return; + } + +// DbgPrint("Entering wait for critical section\n"); + Status = NtWaitForSingleObject(lpCriticalSection->LockSemaphore, + 0, FALSE); + if (!NT_SUCCESS(Status)) + { + DbgPrint("RtlEnterCriticalSection: Failed to wait (Status %x)\n", + Status); + } +// DbgPrint("Left wait for critical section\n"); + } + lpCriticalSection->OwningThread = Thread; + lpCriticalSection->RecursionCount = 1; + +#if 0 + if ((ret = InterlockedIncrement(&(lpCriticalSection->LockCount) )) != 1) + { + if (lpCriticalSection->OwningThread != Thread) + { + NtWaitForSingleObject(lpCriticalSection->LockSemaphore, + 0, + FALSE); + lpCriticalSection->OwningThread = Thread; + } + } else - lpCriticalSection->OwningThread = Thread; + { + lpCriticalSection->OwningThread = Thread; + } lpCriticalSection->RecursionCount++; +#endif } -VOID -STDCALL +VOID STDCALL RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical) { - pcritical->LockCount = 0; + NTSTATUS Status; + + pcritical->LockCount = -1; pcritical->RecursionCount = 0; - NtCreateSemaphore( &pcritical->LockSemaphore, STANDARD_RIGHTS_ALL, NULL, 0, 1 ); + Status = NtCreateSemaphore(&pcritical->LockSemaphore, + STANDARD_RIGHTS_ALL, + NULL, + 0, + 1); + if (!NT_SUCCESS(Status)) + { + DbgPrint("Failed to create semaphore (Status %x)\n", Status); + /* FIXME: Throw exception */ + } pcritical->OwningThread = (HANDLE)-1; // critical section has no owner yet pcritical->Reserved = 0; } -VOID -STDCALL +VOID STDCALL RtlLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { + HANDLE Thread = (HANDLE)NtCurrentTeb()->Cid.UniqueThread; + + if (lpCriticalSection->OwningThread != Thread) + { + DbgPrint("Freeing critical section not owned\n"); + return; + } + lpCriticalSection->RecursionCount--; - if ( lpCriticalSection->RecursionCount == 0 ) { - lpCriticalSection->OwningThread = (HANDLE)-1; - // if LockCount > 0 and RecursionCount == 0 there - // is a waiting thread - // ReleaseSemaphore will fire up a waiting thread - if ( InterlockedDecrement( &lpCriticalSection->LockCount ) > 0 ) - { - NtReleaseSemaphore( lpCriticalSection->LockSemaphore,1,NULL); - } - } + if (lpCriticalSection->RecursionCount > 0) + { + InterlockedDecrement(&lpCriticalSection->LockCount); + return; + } + lpCriticalSection->OwningThread = 0; + if (InterlockedIncrement(&lpCriticalSection->LockCount) >= 0) + { + NTSTATUS Status; + + Status = NtReleaseSemaphore(lpCriticalSection->LockSemaphore, 1, NULL); + if (!NT_SUCCESS(Status)) + { + DbgPrint("Failed to release semaphore (Status %x)\n", + Status); + } + } + +#if 0 + lpCriticalSection->RecursionCount--; + if (lpCriticalSection->RecursionCount == 0) + { + lpCriticalSection->OwningThread = (HANDLE)-1; + // if LockCount > 0 and RecursionCount == 0 there + // is a waiting thread + // ReleaseSemaphore will fire up a waiting thread + if (InterlockedDecrement(&lpCriticalSection->LockCount) > 0) + { + NtReleaseSemaphore( lpCriticalSection->LockSemaphore,1,NULL); + } + } else InterlockedDecrement( &lpCriticalSection->LockCount ); +#endif } -BOOLEAN -STDCALL +BOOLEAN STDCALL RtlTryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { - if( InterlockedCompareExchange( (PVOID *)&lpCriticalSection->LockCount, (PVOID)1, (PVOID)0 ) == 0 ) - { - lpCriticalSection->OwningThread = (HANDLE) NtCurrentTeb()->Cid.UniqueThread; - lpCriticalSection->RecursionCount++; - return TRUE; - } - if( lpCriticalSection->OwningThread == (HANDLE)NtCurrentTeb()->Cid.UniqueThread ) - { - lpCriticalSection->RecursionCount++; - return TRUE; - } + if (InterlockedCompareExchange((PVOID*)&lpCriticalSection->LockCount, + (PVOID)1, (PVOID)0 ) == 0) + { + lpCriticalSection->OwningThread = + (HANDLE) NtCurrentTeb()->Cid.UniqueThread; + lpCriticalSection->RecursionCount++; + return TRUE; + } + if (lpCriticalSection->OwningThread == + (HANDLE)NtCurrentTeb()->Cid.UniqueThread) + { + lpCriticalSection->RecursionCount++; + return TRUE; + } return FALSE; } diff --git a/reactos/lib/ntdll/rtl/env.c b/reactos/lib/ntdll/rtl/env.c index ce1ca6b8d19..919ce37c544 100644 --- a/reactos/lib/ntdll/rtl/env.c +++ b/reactos/lib/ntdll/rtl/env.c @@ -1,4 +1,4 @@ -/* $Id: env.c,v 1.10 2000/06/29 23:35:29 dwelch Exp $ +/* $Id: env.c,v 1.11 2000/08/05 18:01:52 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -322,8 +322,11 @@ found: NULL); if (!NT_SUCCESS(Status)) { + if (Environment == NULL) + { RtlReleasePebLock (); - return Status; + } + return Status; } } @@ -338,8 +341,11 @@ found: PAGE_READWRITE); if (!NT_SUCCESS(Status)) { + if (Environment == NULL) + { RtlReleasePebLock (); - return Status; + } + return Status; } if (env) @@ -404,9 +410,11 @@ found: else Status = STATUS_VARIABLE_NOT_FOUND; } - + if (Environment == NULL) + { RtlReleasePebLock (); - return Status; + } + return Status; } diff --git a/reactos/lib/ntdll/rtl/ppb.c b/reactos/lib/ntdll/rtl/ppb.c index 69fdc1d5e65..5b9a5119f82 100644 --- a/reactos/lib/ntdll/rtl/ppb.c +++ b/reactos/lib/ntdll/rtl/ppb.c @@ -1,4 +1,4 @@ -/* $Id: ppb.c,v 1.7 2000/06/29 23:35:31 dwelch Exp $ +/* $Id: ppb.c,v 1.8 2000/08/05 18:01:52 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -31,13 +31,15 @@ VOID STDCALL RtlAcquirePebLock(VOID) { - + PPEB Peb = NtCurrentPeb (); + Peb->FastPebLockRoutine (Peb->FastPebLock); } VOID STDCALL RtlReleasePebLock(VOID) { - + PPEB Peb = NtCurrentPeb (); + Peb->FastPebUnlockRoutine (Peb->FastPebLock); } static diff --git a/reactos/lib/ntdll/rtl/process.c b/reactos/lib/ntdll/rtl/process.c index c219df2d9fb..200a7bf3e33 100644 --- a/reactos/lib/ntdll/rtl/process.c +++ b/reactos/lib/ntdll/rtl/process.c @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.19 2000/06/29 23:35:31 dwelch Exp $ +/* $Id: process.c,v 1.20 2000/08/05 18:01:52 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -304,6 +304,7 @@ RtlCreateUserProcess ( PROCESS_BASIC_INFORMATION ProcessBasicInfo; ULONG retlen; CHAR ImageFileName[8]; + ANSI_STRING ProcedureName; DPRINT("RtlCreateUserProcess\n"); @@ -333,7 +334,7 @@ RtlCreateUserProcess ( * Get some information about the process */ - ZwQueryInformationProcess(ProcessInfo->ProcessHandle, + NtQueryInformationProcess(ProcessInfo->ProcessHandle, ProcessBasicInformation, &ProcessBasicInfo, sizeof(ProcessBasicInfo), @@ -353,12 +354,20 @@ RtlCreateUserProcess ( DPRINT("Creating peb\n"); KlInitPeb(ProcessInfo->ProcessHandle, Ppb); + DPRINT("Retrieving entry point address\n"); + RtlInitAnsiString (&ProcedureName, "LdrInitializeThunk"); + Status = LdrGetProcedureAddress ((PVOID)NTDLL_BASE, + &ProcedureName, + 0, + (PVOID*)&lpStartAddress); + if (!NT_SUCCESS(Status)) + { + DbgPrint ("LdrGetProcedureAddress failed (Status %x)\n", Status); + return (Status); + } + DPRINT("lpStartAddress 0x%08lx\n", (ULONG)lpStartAddress); + DPRINT("Creating thread for process\n"); - lpStartAddress = (LPTHREAD_START_ROUTINE) - ((PIMAGE_OPTIONAL_HEADER)OPTHDROFFSET(NTDLL_BASE))-> - AddressOfEntryPoint + - ((PIMAGE_OPTIONAL_HEADER)OPTHDROFFSET(NTDLL_BASE))->ImageBase; - hThread = KlCreateFirstThread(ProcessInfo->ProcessHandle, // Headers.OptionalHeader.SizeOfStackReserve, 0x200000, diff --git a/reactos/lib/ntdll/stubs/stubs.c b/reactos/lib/ntdll/stubs/stubs.c index 63dc7975ea4..3ef6a3cba0e 100644 --- a/reactos/lib/ntdll/stubs/stubs.c +++ b/reactos/lib/ntdll/stubs/stubs.c @@ -33,7 +33,7 @@ STUB(LdrFindEntryForAddress) STUB(LdrFindResourceDirectory_U) STUB(LdrGetDllHandle) -STUB(LdrGetProcedureAddress) +//STUB(LdrGetProcedureAddress) STUB(LdrInitializeThunk) STUB(LdrProcessRelocationBlock) STUB(LdrQueryImageFileExecutionOptions) diff --git a/reactos/loaders/dos/loadros.asm b/reactos/loaders/dos/loadros.asm index 7d7c66213dd..6771b9947ca 100644 --- a/reactos/loaders/dos/loadros.asm +++ b/reactos/loaders/dos/loadros.asm @@ -34,7 +34,7 @@ org 100h ; BITS 16 -;%define NDEBUG 1 +%define NDEBUG 1 %macro DPRINT 1+ %ifndef NDEBUG @@ -195,7 +195,7 @@ l16: ; ; Begin the pmode initalization ; - ;jmp _to_pmode + jmp _to_pmode exit: mov ax,04c00h diff --git a/reactos/ntoskrnl/include/internal/ldr.h b/reactos/ntoskrnl/include/internal/ldr.h index d18b1126406..cfd2f7732b9 100644 --- a/reactos/ntoskrnl/include/internal/ldr.h +++ b/reactos/ntoskrnl/include/internal/ldr.h @@ -46,4 +46,20 @@ LdrpMapImage ( PVOID * ImageBase ); + +NTSTATUS STDCALL +LdrGetProcedureAddress (IN PVOID BaseAddress, + IN PANSI_STRING Name, + IN ULONG Ordinal, + OUT PVOID *ProcedureAddress); + + +PVOID STDCALL +RtlImageDirectoryEntryToData ( + IN PVOID BaseAddress, + IN BOOLEAN ImageLoaded, + IN ULONG Directory, + OUT PULONG Size); + + #endif /* __INCLUDE_INTERNAL_LDR_H */ diff --git a/reactos/ntoskrnl/ldr/rtl.c b/reactos/ntoskrnl/ldr/rtl.c index 90c0ac4ee05..9224dd7b83d 100644 --- a/reactos/ntoskrnl/ldr/rtl.c +++ b/reactos/ntoskrnl/ldr/rtl.c @@ -1,4 +1,4 @@ -/* $Id: rtl.c,v 1.8 2000/06/29 23:35:40 dwelch Exp $ +/* $Id: rtl.c,v 1.9 2000/08/05 18:01:53 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -24,78 +24,6 @@ /* FUNCTIONS ****************************************************************/ -#if 0 -static PVOID LdrGetExportAddress(PMODULE_OBJECT ModuleObject, - PUCHAR Name, - USHORT Hint) -{ - WORD Idx; - DWORD ExportsStartRVA, ExportsEndRVA; - PVOID ExportAddress; - PWORD OrdinalList; - PDWORD FunctionList, NameList; - PIMAGE_SECTION_HEADER SectionHeader; - PIMAGE_EXPORT_DIRECTORY ExportDirectory; - - ExportsStartRVA = ModuleObject->Image.PE.OptionalHeader->DataDirectory - [IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress; - ExportsEndRVA = ExportsStartRVA + - ModuleObject->Image.PE.OptionalHeader->DataDirectory - [IMAGE_DIRECTORY_ENTRY_EXPORT].Size; - - /* Get the IMAGE_SECTION_HEADER that contains the exports. This is - usually the .edata section, but doesn't have to be. */ - SectionHeader = LdrPEGetEnclosingSectionHeader(ExportsStartRVA, ModuleObject); - - if (!SectionHeader) - { - return 0; - } - - ExportDirectory = MakePtr(PIMAGE_EXPORT_DIRECTORY, - ModuleObject->Base, - SectionHeader->VirtualAddress); - - FunctionList = (PDWORD)((DWORD)ExportDirectory->AddressOfFunctions + ModuleObject->Base); - NameList = (PDWORD)((DWORD)ExportDirectory->AddressOfNames + ModuleObject->Base); - OrdinalList = (PWORD)((DWORD)ExportDirectory->AddressOfNameOrdinals + ModuleObject->Base); - - ExportAddress = 0; - - if (Name != NULL) - { - for (Idx = 0; Idx < ExportDirectory->NumberOfNames; Idx++) - { -#if 0 - DPRINT(" Name:%s NameList[%d]:%s\n", - Name, - Idx, - (DWORD) ModuleObject->Base + NameList[Idx]); - -#endif - if (!strcmp(Name, (PCHAR) ((DWORD)ModuleObject->Base + NameList[Idx]))) - { - ExportAddress = (PVOID) ((DWORD)ModuleObject->Base + - FunctionList[OrdinalList[Idx]]); - break; - } - } - } - else /* use hint */ - { - ExportAddress = (PVOID) ((DWORD)ModuleObject->Base + - FunctionList[Hint - ExportDirectory->Base]); - } - if (ExportAddress == 0) - { - DbgPrint("Export not found for %d:%s\n", Hint, - Name != NULL ? Name : "(Ordinal)"); - KeBugCheck(0); - } - - return ExportAddress; -} -#endif PIMAGE_NT_HEADERS STDCALL RtlImageNtHeader (IN PVOID BaseAddress) { @@ -120,4 +48,100 @@ PIMAGE_NT_HEADERS STDCALL RtlImageNtHeader (IN PVOID BaseAddress) } +PVOID STDCALL +RtlImageDirectoryEntryToData ( + IN PVOID BaseAddress, + IN BOOLEAN ImageLoaded, + IN ULONG Directory, + OUT PULONG Size + ) +{ + PIMAGE_NT_HEADERS NtHeader; + PIMAGE_SECTION_HEADER SectionHeader; + ULONG Va; + ULONG Count; + + NtHeader = RtlImageNtHeader (BaseAddress); + if (NtHeader == NULL) + return NULL; + + if (Directory >= NtHeader->OptionalHeader.NumberOfRvaAndSizes) + return NULL; + + Va = NtHeader->OptionalHeader.DataDirectory[Directory].VirtualAddress; + if (Va == 0) + return NULL; + + if (Size) + *Size = NtHeader->OptionalHeader.DataDirectory[Directory].Size; + + if (ImageLoaded) + return (PVOID)(BaseAddress + Va); + + /* image mapped as ordinary file, we must find raw pointer */ + SectionHeader = (PIMAGE_SECTION_HEADER)(NtHeader + 1); + Count = NtHeader->FileHeader.NumberOfSections; + while (Count--) + { + if (SectionHeader->VirtualAddress == Va) + return (PVOID)(BaseAddress + SectionHeader->PointerToRawData); + SectionHeader++; + } + + return NULL; +} + + +NTSTATUS STDCALL +LdrGetProcedureAddress (IN PVOID BaseAddress, + IN PANSI_STRING Name, + IN ULONG Ordinal, + OUT PVOID *ProcedureAddress) +{ + PIMAGE_EXPORT_DIRECTORY ExportDir; + PUSHORT OrdinalPtr; + PULONG NamePtr; + PULONG AddressPtr; + ULONG i = 0; + + /* get the pointer to the export directory */ + ExportDir = (PIMAGE_EXPORT_DIRECTORY) + RtlImageDirectoryEntryToData (BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_EXPORT, &i); + + if (!ExportDir || !i || !ProcedureAddress) + { + return STATUS_INVALID_PARAMETER; + } + + AddressPtr = (PULONG)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfFunctions); + if (Name && Name->Length) + { + /* by name */ + OrdinalPtr = (PUSHORT)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfNameOrdinals); + NamePtr = (PULONG)((ULONG)BaseAddress + (ULONG)ExportDir->AddressOfNames); + for (i = 0; i < ExportDir->NumberOfNames; i++, NamePtr++, OrdinalPtr++) + { + if (!_strnicmp(Name->Buffer, (char*)(BaseAddress + *NamePtr), Name->Length)) + { + *ProcedureAddress = (PVOID)((ULONG)BaseAddress + (ULONG)AddressPtr[*OrdinalPtr]); + return STATUS_SUCCESS; + } + } + DbgPrint("LdrGetProcedureAddress: Can't resolve symbol '%Z'\n", Name); + } + else + { + /* by ordinal */ + Ordinal &= 0x0000FFFF; + if (Ordinal - ExportDir->Base < ExportDir->NumberOfFunctions) + { + *ProcedureAddress = (PVOID)((ULONG)BaseAddress + (ULONG)AddressPtr[Ordinal - ExportDir->Base]); + return STATUS_SUCCESS; + } + DbgPrint("LdrGetProcedureAddress: Can't resolve symbol @%d\n", Ordinal); + } + + return STATUS_PROCEDURE_NOT_FOUND; +} + /* EOF */ diff --git a/reactos/ntoskrnl/ldr/sysdll.c b/reactos/ntoskrnl/ldr/sysdll.c index 911f0800b06..bda0264843f 100644 --- a/reactos/ntoskrnl/ldr/sysdll.c +++ b/reactos/ntoskrnl/ldr/sysdll.c @@ -18,6 +18,7 @@ #include #include #include +#include #define NDEBUG #include @@ -69,6 +70,8 @@ NTSTATUS LdrpMapSystemDll(HANDLE ProcessHandle, PIMAGE_NT_HEADERS NTHeaders; ULONG InitialViewSize; ULONG i; + PEPROCESS Process; + ANSI_STRING ProcedureName; /* * Locate and open NTDLL to determine ImageBase @@ -126,20 +129,6 @@ NTSTATUS LdrpMapSystemDll(HANDLE ProcessHandle, ImageBase = NTHeaders->OptionalHeader.ImageBase; ImageSize = NTHeaders->OptionalHeader.SizeOfImage; - /* - * FIXME: retrieve the offset of LdrStartup from NTDLL - */ - DPRINT("ImageBase %x\n",ImageBase); - *LdrStartupAddr = - (PVOID)ImageBase + NTHeaders->OptionalHeader.AddressOfEntryPoint; - DPRINT("LdrStartupAddr %x\n", LdrStartupAddr); - SystemDllEntryPoint = *LdrStartupAddr; - - /* - * FIXME: retrieve the offset of the APC dispatcher from NTDLL - */ - SystemDllApcDispatcher = NULL; - /* * Create a section for NTDLL */ @@ -215,7 +204,72 @@ NTSTATUS LdrpMapSystemDll(HANDLE ProcessHandle, } } DPRINT("Finished mapping\n"); + + + DPRINT("Referencing process\n"); + Status = ObReferenceObjectByHandle(ProcessHandle, + PROCESS_ALL_ACCESS, + PsProcessType, + KernelMode, + (PVOID*)&Process, + NULL); + if (!NT_SUCCESS(Status)) + { + DbgPrint("ObReferenceObjectByProcess() failed (Status %x)\n", Status); + return(Status); + } + + DPRINT("Attaching to Process\n"); + KeAttachProcess(Process); + + /* + * retrieve ntdll's startup address + */ + RtlInitAnsiString (&ProcedureName, + "LdrInitializeThunk"); + Status = LdrGetProcedureAddress ((PVOID)ImageBase, + &ProcedureName, + 0, + &SystemDllEntryPoint); + if (!NT_SUCCESS(Status)) + { + DbgPrint ("LdrGetProcedureAddress failed (Status %x)\n", Status); + KeDetachProcess(); + ObDereferenceObject(Process); + ZwClose(NTDllSectionHandle); + return (Status); + } + DPRINT("SystemDllEntryPoint 0x%08lx\n", + SystemDllEntryPoint); + *LdrStartupAddr = SystemDllEntryPoint; + + /* + * FIXME: retrieve the offset of the APC dispatcher from NTDLL + */ +/* + RtlInitAnsiString (&ProcedureName, + "KiUserApcDispatcher"); + Status = LdrGetProcedureAddress ((PVOID)ImageBase, + &ProcedureName, + 0, + (PULONG)&SystemDllApcDispatcher); + if (!NT_SUCCESS(Status)) + { + DbgPrint ("LdrGetProcedureAddress failed (Status %x)\n", Status); + KeDetachProcess(); + ObDereferenceObject(Process); + ZwClose(NTDllSectionHandle); + return (Status); + } +*/ + SystemDllApcDispatcher = NULL; + + KeDetachProcess(); + ObDereferenceObject(Process); + ZwClose(NTDllSectionHandle); - + return(STATUS_SUCCESS); } + +/* EOF */ diff --git a/reactos/ntoskrnl/ps/create.c b/reactos/ntoskrnl/ps/create.c index 124e7a9eec1..ac344d8796f 100644 --- a/reactos/ntoskrnl/ps/create.c +++ b/reactos/ntoskrnl/ps/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.20 2000/07/07 00:49:02 phreak Exp $ +/* $Id: create.c,v 1.21 2000/08/05 18:01:54 dwelch Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -44,8 +44,7 @@ extern LIST_ENTRY PiThreadListHead; /* FUNCTIONS ***************************************************************/ -NTSTATUS -STDCALL +NTSTATUS STDCALL PsAssignImpersonationToken(PETHREAD Thread, HANDLE TokenHandle) { @@ -404,41 +403,48 @@ static NTSTATUS PsCreateTeb (HANDLE ProcessHandle, PETHREAD Thread, PINITIAL_TEB InitialTeb) { -// MEMORY_BASIC_INFORMATION Info; + MEMORY_BASIC_INFORMATION Info; NTSTATUS Status; ULONG ByteCount; ULONG RegionSize; ULONG TebSize; PVOID TebBase; NT_TEB Teb; + ULONG ResultLength; TebBase = (PVOID)0x7FFDE000; TebSize = PAGESIZE; while (TRUE) { - /* The TEB must reside in user space */ - Status = NtAllocateVirtualMemory(ProcessHandle, - &TebBase, - 0, - &TebSize, - MEM_COMMIT, - PAGE_READWRITE); - if (NT_SUCCESS(Status)) - { -// DPRINT1 ("TEB allocated at %x\n", TebBase); - break; - } - else - { - DPRINT ("TEB allocation failed! Status %x\n",Status); - for(;;); - return(Status); - } - -// TebBase = Info.BaseAddress - TebSize; + Status = NtQueryVirtualMemory(ProcessHandle, + TebBase, + MemoryBasicInformation, + &Info, + sizeof(Info), + &ResultLength); + if (!NT_SUCCESS(Status)) + { + DbgPrint("NtQueryVirtualMemory (Status %x)\n", Status); + KeBugCheck(0); + } + if (Info.State == MEM_FREE) + { + /* The TEB must reside in user space */ + Status = NtAllocateVirtualMemory(ProcessHandle, + &TebBase, + 0, + &TebSize, + MEM_COMMIT, + PAGE_READWRITE); + if (NT_SUCCESS(Status)) + { + break; + } + } + TebBase = TebBase - TebSize; - } + } DPRINT ("TebBase %p TebSize %lu\n", TebBase, TebSize); @@ -526,6 +532,20 @@ NTSTATUS STDCALL NtCreateThread (PHANDLE ThreadHandle, { return(Status); } + +#if 0 + Status = NtWriteVirtualMemory(ProcessHandle, + (PVOID)(((ULONG)ThreadContext->Esp) - 8), + &ThreadContext->Eip, + sizeof(ULONG), + &Length); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtWriteVirtualMemory failed\n"); + KeBugCheck(0); + } + ThreadContext->Eip = LdrpGetSystemDllEntryPoint; +#endif Status = HalInitTaskWithContext(Thread,ThreadContext); if (!NT_SUCCESS(Status)) diff --git a/reactos/subsys/csrss/api/conio.c b/reactos/subsys/csrss/api/conio.c index 82040c549a7..8da2d962b31 100644 --- a/reactos/subsys/csrss/api/conio.c +++ b/reactos/subsys/csrss/api/conio.c @@ -1,4 +1,4 @@ -/* $Id: conio.c,v 1.10 2000/07/11 04:09:25 phreak Exp $ +/* $Id: conio.c,v 1.11 2000/08/05 18:01:58 dwelch Exp $ * * reactos/subsys/csrss/api/conio.c * @@ -520,7 +520,7 @@ VOID Console_Api( DWORD RefreshEvent ) while( 1 ) { KeyEventRecord = RtlAllocateHeap(CsrssApiHeap, - 0, + 0, sizeof(ConsoleInput)); if ( KeyEventRecord == 0 ) { diff --git a/reactos/subsys/csrss/makefile b/reactos/subsys/csrss/makefile index f5785084bd6..811f351ae67 100644 --- a/reactos/subsys/csrss/makefile +++ b/reactos/subsys/csrss/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.6 2000/03/22 18:35:58 dwelch Exp $ +# $Id: makefile,v 1.7 2000/08/05 18:01:57 dwelch Exp $ # # CSRSS: Client/server runtime subsystem # @@ -63,7 +63,7 @@ else $(CP) $(TARGET).exe ../../$(DIST_DIR)/subsys/$(TARGET).exe endif - +WITH_DEBUGGING = yes include ../../rules.mak # EOF