- make a copy of KSFILTER_DESCRIPTOR as it might have been allocated from the stack
- always initialize object bag in filter factory
svn path=/trunk/; revision=72779
- Acquire DirResource before MainResource in DoQuery to keep locking order consistent and avoid deadlocks. Patch by Volodymyr Shcherbyna with small modification by me.
CORE-11959 CORE-11652
svn path=/trunk/; revision=72681
Concerning the fix in the NDK header I've checked that publicly available information about this structure (NirSoft website, Windows Internals book, Windows symbols...) has the member correctly named.
svn path=/trunk/; revision=72679
- Don't try to mark IRPs as pending when they might already be completed. For simplicity, always pend them instead.
CORE-11962
svn path=/trunk/; revision=72673
The "Add" routine is optional in the KSDEVICE_DISPATCH structure.
KsDevice.Descriptor should be initialized even if there is no device dispatch.
svn path=/trunk/; revision=72661
- Set correct major and minor versions
- Update the cmakelist file
- Export FltRegisterFilter and FltUnregisterFilter
- Minor cleanup
svn path=/trunk/; revision=72596
- Add stubs for context registration
- Add dispatch and device control handlers
- Implement the load IOCTL. We can now load minifilters with 'fltmc load <myfilter>'
svn path=/trunk/; revision=72595
- Properly handle requests that were sent directly to the fltmgr instead of sending them down the stack
- Add a separate callback for IRP_MJ_DEVICE_CONTROL and forward them on to an internal handler
- We can now open a handle to the fltmgr and send IOCTLs down to it.
svn path=/trunk/; revision=72593
- Better report kernel stack (real back traces for all threads!)
- Support reporting loaded libraries (== drivers, hal, etc.). You can even debug KDGDB inside KDGDB :-)
- A few improvements here and there
CORE-8531
svn path=/trunk/; revision=72533
- Return the correct pointer when handling TargetDeviceRelation, and avoid unnecessarily allocating from NonPagedPool. Patch by Vardan Mikayelyan, merged from r72376.
svn path=/trunk/; revision=72485
- Add a ugly and grotesque hack to give "o" back to RtlAssert so that we actually break on ASSERTs
- Check for the breakpoint instruction for deciding when to move forward the ProgramCounter. This is OK since KD removes all breakpoints set when hitting a soft BP
svn path=/trunk/; revision=72467
- Remove invalid "ServiceType" registry value of the MPU401 driver.
- Fix MUP driver group.
- Fix MountMgr driver group.
- Fix rosfltmgr driver group.
- Add "Base" group list (until we have it inside some driver inf).
- Add tags for acpi, pci, null, beep and ksecdd drivers.
svn path=/trunk/; revision=72450
- Implement setting and removing breakpoints
- Implement single-stepping
- Only get past the breakpoint instruction when it comes from RtlpBreakWithStatus
- Implement writing to memory
- Always send the thread raising the exception to GDB to avoid confusing it
- Let GDB find the program counter alone by querying the registers (support was already there before.)
- Properly escape special characters on input
Ladies and gentlemen : the almost-fully functional GDB stub. (still no real multi-process support :-( )
To enable , in CMakeCache.txt :
- Set GDB:BOOL=TRUE
- Set _WINKD_:BOOL=TRUE
- Set KDBG:BOOL=FALSE
To do : give GDB the list of loaded drivers. Loading ntoskrnl.exe symbols at 0x80801000 already does a good enough job.
Default output is on COM1. Can be configure to any othe COM port with usual kernel options.
Hope you'll like it as much as I do ;-)
svn path=/trunk/; revision=72435
After renaming a directory, rename any children FCB that would still exist in the FSD. This will allow next directory opening to properly work and open correct data.
This defeats corruption on directory renaming.
Unfortunately, this solution is not ideal and our driver should be reworked so that it quits using a hash table and it quits storing the whole path in the FCBs.
Deep thanks to Wim Hueskes and Thomas Faber for their help debugging the issue!
CORE-11377
svn path=/trunk/; revision=72145
Properly check for opened handles in subdirectories when we're about to rename a directory.
This helps reducing corruption where some renaming operations were allowed whereas they shouldn't have been.
CORE-11377
CORE-11426
svn path=/trunk/; revision=72136
Track child FCB in parent FCB to allow browsing them in case it's needed.
This allows fixing a FIXME and offering better performances when renaming a directory.
CORE-11377
CORE-11426
svn path=/trunk/; revision=72124
Refactor vfatMakeFCBFromDirEntry() and vfatUpdateFCB() so that they share code. It will help avoiding wild FCB modifications on renaming.
CORE-11377
svn path=/trunk/; revision=72113
Fixes suggested by Thomas:
- Don't dereference cached data after unpinning
- Pin big enough data to read direntries
CORE-11377
svn path=/trunk/; revision=72096