gedmurphy in reactos

Forgot to add the cmake changes
[FLTMGR]

- Add a rather messy header that I've been slowly building as I'm starting to understand the internals.

- Mostly taken from the MS PDBs and info gained from OSR and Alex Carp's blog. (https://fsfilters.blogspot.co.uk)

    • -0
    • +284
    /trunk/reactos/drivers/filters/fltmgr/fltmgrint.h
[FLTMGR]

- Implement FltCreateCommunicationPort, FltCloseCommunicationPort, FltCloseClientPort, and stub FltSendMessage

- Add two new object types for the server port and client ports

- Implement object type callbacks for closing and deleting these new ports

- Create the comms object and create the symbolic link (FltMgrMsg) to allow usermode to open a handle to the comms layer (aka FilterConnectCommunicationPort)

- Although untested, the comms layer objects should be mostly setup, and we should be able to open a connection from usermode.

    • -0
    • +373
    /trunk/reactos/drivers/filters/fltmgr/Messaging.c
[FLTMGR}

- Implement FltAcquirePushLockExclusive, FltAcquirePushLockShared and FltReleasePushLock. Lifted from ntos' internal pushlock routines.

- Implement FltpObjectPointerReference and partially implement FltpObjectPointerDerference

    • -0
    • +113
    /trunk/reactos/drivers/filters/fltmgr/Object.c
[FLTMGR]

- Add the missing IOCTLs that were added to fltlib

    • -15
    • +43
    /trunk/reactos/drivers/filters/fltmgr/Dispatch.c
[FLTLIB]

- Implement FilterConnectCommunicationPort

- Add the remaining IOCTLs fltlib sends to the fltmgr

    • -0
    • +6
    /trunk/reactos/dll/win32/fltlib/fltlib.h
    • -0
    • +2
    /trunk/reactos/dll/win32/fltlib/CMakeLists.txt
    • -0
    • +180
    /trunk/reactos/dll/win32/fltlib/message.c
    • -71
    • +0
    /trunk/reactos/dll/win32/fltlib/stubs.c
    • -1
    • +13
    /trunk/reactos/dll/win32/fltlib/fltlib.c
[IoCsq]

- Clean up the DriverContext that was dirtied by the CSQ

The do while(0) thing feels a bit weird. I can only assume it was done so a 'break' will unlock before returning.

    • -0
    • +7
    /trunk/reactos/sdk/lib/drivers/csq/csq.c
[NTOS]

- Fix an assert in MiFindExportedRoutineByName to be something more like what the original author probably wanted to do.

- This allows FileSpy to run successfully with the legacy filter driver

- https://postimg.org/image/7z73xy4pd/

    • -2
    • +3
    /trunk/reactos/ntoskrnl/mm/ARM3/sysldr.c
[PSDK]

- Add flt error codes to winerror.h

Stub 'LoadString(UINT)'
try to fix unix build
[FLTMC]

- Add fltmc to the build

- Add some resource files for translation

    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/ru-RU.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/bg-BG.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/uk-UA.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/cs-CZ.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/it-IT.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/zh-CN.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/fr-FR.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/pl-PL.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/sq-AL.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/de-DE.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/es-ES.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/sv-SE.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/tr-TR.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/zh-TW.rc
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/ro-RO.rc
[FLTMGR]

- We can now swap the 2k3 fltmgr with ours and successfully boot windows, so we can use the same name from here on.

- Start type is still demand as I've not done too much testing in ros, but it seems to be boot and run fine, so can be changed to boot start for anyone wanting to experiment a bit.

    • -5
    • +5
    /trunk/reactos/boot/bootdata/hivesys.inf
[FLTMGR]

- Set correct major and minor versions

- Update the cmakelist file

- Export FltRegisterFilter and FltUnregisterFilter

- Minor cleanup

    • -0
    • +4
    /trunk/reactos/drivers/filters/fltmgr/fltmgr.spec
    • -98
    • +23
    /trunk/reactos/drivers/filters/fltmgr/fltmgr.h
[FLTMGR]

- Add stubs for context registration

- Add dispatch and device control handlers

- Implement the load IOCTL. We can now load minifilters with 'fltmc load <myfilter>'

    • -0
    • +79
    /trunk/reactos/drivers/filters/fltmgr/Context.c
    • -0
    • +129
    /trunk/reactos/drivers/filters/fltmgr/Dispatch.c
[FLTMGR]

- Implement FltLoadFilter and stub FltUnloadFilter

- Register contexts if the caller requests (coming later)

- Stubpliment FltStartFiltering

    • -0
    • +321
    /trunk/reactos/drivers/filters/fltmgr/Filter.c
[FLTMGR]

- 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.

    • -22
    • +94
    /trunk/reactos/drivers/filters/fltmgr/Interface.c
Turn off building of the fltmgr for now while I (slowly) update it.
[FLTLIB]

- On load, open a handle to fltmgr, not the target driver...

- Fixup the load data we send to the fltmgr to be the same Windows layout. We need to copy this interface to allow component sharing between windows and ros.

- Move IOCTLs to shared header

    • -16
    • +14
    /trunk/reactos/dll/win32/fltlib/fltlib.c
    • -1
    • +5
    /trunk/reactos/dll/win32/fltlib/CMakeLists.txt
[FLTMGR]

- Add a header for sharing data between fltlib and fltmgr

[README.WINE]

- Remove reference to fltlib. It was, and will likely only ever be a stubbed dll in Wine

[FLTLIB]

- Stub out fltlib.dll.

- Add basic implementations for FilterLoad and FilterUnload

- Remove the wine code, this lib talks directly to fltmgr.sys and is therefore a reactos only dll from now on.

    • -0
    • +403
    /trunk/reactos/dll/win32/fltlib/stubs.c
    • -24
    • +23
    /trunk/reactos/dll/win32/fltlib/fltlib.spec
    • -2
    • +2
    /trunk/reactos/dll/win32/fltlib/CMakeLists.txt
    • -73
    • +137
    /trunk/reactos/dll/win32/fltlib/fltlib.c
[FLTMC]

- Start to implement fltMC

- It currently supports loading, unloading and listing loaded filter driver.

    • -0
    • +14
    /trunk/reactos/base/applications/fltmc/resource.h
    • -0
    • +60
    /trunk/reactos/base/applications/fltmc/fltmc.rc
    • -0
    • +9
    /trunk/reactos/base/applications/fltmc/CMakeLists.txt
    • -0
    • +301
    /trunk/reactos/base/applications/fltmc/fltmc.cpp
    • -0
    • +27
    /trunk/reactos/base/applications/fltmc/lang/en-US.rc
  1. /trunk/reactos/base/applications/fltmc/lang
[FLTLIB_APITEST]

- Create a skeleton test project for fltlib.dll

- Not yet part of the build

    • -0
    • +16
    /trunk/rostests/apitests/fltlib/CMakeLists.txt
    • -0
    • +45
    /trunk/rostests/apitests/fltlib/comms.c
    • -0
    • +44
    /trunk/rostests/apitests/fltlib/load.c
    • -0
    • +44
    /trunk/rostests/apitests/fltlib/volume_find.c
    • -0
    • +45
    /trunk/rostests/apitests/fltlib/handles.c
    • -0
    • +44
    /trunk/rostests/apitests/fltlib/info.c
    • -0
    • +47
    /trunk/rostests/apitests/fltlib/filter_find.c
    • -0
    • +44
    /trunk/rostests/apitests/fltlib/instance_find.c
    • -0
    • +44
    /trunk/rostests/apitests/fltlib/instance.c
    • -0
    • +26
    /trunk/rostests/apitests/fltlib/testlist.c
- Slight code cleanup

- Add missing PAGED_CODE (thanks thomas)

    • -0
    • +3
    /trunk/reactos/ntoskrnl/io/iomgr/file.c
    • -2
    • +2
    /trunk/reactos/ntoskrnl/io/iomgr/device.c
[NTOS]

- Implement IoCreateFileSpecifyDeviceObjectHint - will be needed for fltmgr

- Rename IoCreateFile to IopCreateFile and forward both IoCreateFile and IoCreateFileSpecifyDeviceObjectHint to that routine

- Add support to IopParseDevice to check for a top level device hint and use that instead of the real device.

- Create a file object extension in IopParseDevice and use that to store our top level device hint data

- Update IoGetRelatedDeviceObject to check for file object extensions and return the 'fake' top level device if we have one

    • -2
    • +11
    /trunk/reactos/ntoskrnl/io/iomgr/device.c
    • -54
    • +156
    /trunk/reactos/ntoskrnl/io/iomgr/file.c
[SDK]

- Add missing filter manager status codes

[FLTMGR]

Move it to a more correct place in the tree

    • -0
    • +158
    /trunk/reactos/drivers/filters/fltmgr/Object.c
    • -0
    • +2153
    /trunk/reactos/drivers/filters/fltmgr/Interface.c
    • -0
    • +409
    /trunk/reactos/drivers/filters/fltmgr/fltmgr.h
  1. … 3 more files in changeset.
[FLTMGR]

- Implement basic versions of FltRegisterFilter and FltUnregisterFilter

- Add layout of data for FLT_FILTER, FLT_INSTANCE, FLT_OBJECT and their accociated data

- Add basic rundown protection for the FLT_FILTER object

- Removed from the build for now because GCC doesn't like our fltkernel.h header

    • -0
    • +251
    /trunk/reactos/drivers/fs_minifilter/fltmgr/Registration.c
    • -0
    • +158
    /trunk/reactos/drivers/fs_minifilter/fltmgr/Object.c
The javascript search is turd...