From: Michael V. <mi...@bl...> - 2001-06-11 17:23:15
|
On Sat, 9 Jun 2001, Andrew G. Tereschenko wrote: > > > > No I am not sure the interrupt vector will work under SMP. It > > looks like > > > your code is much better. > > > > I come to agreement with Vines to replace current code. I'll do it in near > > future. > > Attached is a draft (not yet fully cleaned) new interrupt installation code. > > It need to cleaned a few and moved to CVS tree if everybody agree. > > I have some problems to determine thich function make in pageable area > - so only one (actual int handler) are pageable. > > Can somebody build and test on W2K and NT ? Hi Andrew, I tried building it on my W2K machine this morning, I had to make a small change to the source before it would compile: -------- diff -r int80.new/src/DebugServiceHooks.cpp int80.andrew/src/DebugServiceHooks.cpp 137c137 < for ( char cpu=0; cpu < *KeNumberProcessors; ++cpu ) --- > for ( char cpu=0; cpu<KeNumberProcessors; ++cpu ) 160c160 < KeSetAffinityThread( pThread, (1<<*KeNumberProcessors)-1 ); --- > KeSetAffinityThread( pThread, (1<<KeNumberProcessors)-1 ); -------- Then I had a little trouble enabling the driver. I tracked it down to the IOCTL parameters. The original driver used METHOD_BUFFERED, but your driver uses METHOD_NEITHER. I'm not sure what the difference is though, but the 80.exe test program works fine when I recompile it using METHOD_NEITHER. --------- $ diff src/int80/int80.h.org src/int80/int80.h -u --- src/int80/int80.h.org Mon Jun 11 11:50:40 2001 +++ src/int80/int80.h Mon Jun 11 11:47:40 2001 @@ -14,11 +14,11 @@ FILE_ANY_ACCESS) #define IOCTL_ADDINT_SYSTEM_SERVICE_USAGE CTL_CODE(FILE_DEVICE_HOOKINT, \ ADDINT_IOCTL_INDEX, \ - METHOD_BUFFERED, \ + METHOD_NEITHER, \ FILE_ANY_ACCESS) #define IOCTL_REMOVEINT_SYSTEM_SERVICE_USAGE CTL_CODE(FILE_DEVICE_HOOKINT, \ REMOVEINT_IOCTL_INDEX, \ - METHOD_BUFFER, \ + METHOD_NEITHER, \ FILE_ANY_ACCESS) #define IOCTL_CALLPORT_SYSTEM_SERVICE_USAGE CTL_CODE(FILE_DEVICE_HOOKINT,\ CALLPORT_IOCTL_INDEX, \ --------- LINE seems to run normally with the new driver. However, when I remove the driver then try to run LINE again I get a BSOD. I guess it isn't cleaning up after itself properly. Here's a little more information that might help: 0) Reboot machine 1) Run LINE (without the driver loaded) 2) Load the driver using 'install.bat' 3) Unload the driver using 'remove.bat' 4) Run LINE. This works fine. But: 0) Reboot machine 1) Run LINE (without the driver loaded) 2) Load the driver using 'install.bat' 3) Run LINE using driver 3) Unload the driver using 'remove.bat' 4) Run LINE. and I get a BSOD everytime. (DRIVER_IRQL_NOT_LESS_OR_EQUAL) I also noticed that on the top of all the driver source files, there is the copyright notice '1999 Jose Flores' but there is no indication of what license (if any) the source has been released under? Mike |