Comments (3)
You have to write your own driver. Windivert is built on top of WFP. Modern network drivers are build on top of it.
Unfortunately that's a rather extensive and complex process. But yes that's where you have to go to get maximum performance.
from windivertsharp.
Hi there.
I've actually written my own driver so I've long abandoned WinDivert.
This issue is one reason why I've abandoned WinDivert (aside from it being flagged as Malware by everyone, including Microsoft Driver Signing Portal).
The problem is the way WinDivert is written, it comes in to the network stack like a wrecking ball and essentially forces the entire network stack to pop out of kernel space, into user space, then back into kernel space. It even totally destroys the mechanisms inside of Windows Filtering Platform that are used to make multiple drivers play nice. Just totally rips the packets out of kernel space by deep copying them, dropping them, and waiting for the user to scoop them up.
So unfortunately there isn't anything that can be done here. My driver is written in C++ and feeds to a local proxy and there is essentially 0 impact on network performance. Why? Because the driver leaves everything alone in the kernel space and actually respects the WFP subsystem of the OS.
I'm not trashing WinDivert, basil made these innards of the OS available to everyone via the user space without needing their own EV certificate. That's great. It just comes at great cost and your example is one of them.
All the best.
from windivertsharp.
I see.. that makes a lot of sense. Sorry if this re-opens the issue, I just have one more question.
Would you say that using WFP over WinDivert here will alleviate this problem, or WFP would do and perform similarly in this situation?
Thank you once more.
from windivertsharp.
Related Issues (16)
- WinDivertAddress problems
- WinDivert 2.0 support HOT 4
- Handle is always null. HOT 5
- Send fake ACK HOT 1
- Question - How can I use this package to drop packets according to a filter? HOT 3
- How would I use this tool to filter/drop packets in a C# Ui HOT 1
- Missing Send only mode
- WinDivertRecv read length incorrect in windivert 2.2.2 HOT 1
- Other issues with checksums too apparently
- Crash within WinDivertParseResult initializer HOT 17
- Update readme HOT 1
- How do I use this? HOT 12
- Update sample code HOT 16
- Issue while sending my own packet HOT 4
- Port/SeqNum have bytes reversed HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from windivertsharp.