You're not making a driver in C#. It would be easier to learn C/C++ and use the Driver SDK than it would to rewrite sections of the SDK in C# so you can make a driver in C#.
An application like this is not just a simple C# app and hoping that you can use a couple of events to trigger your code.
FAR, FAR from it.
The
FileSystemWatcher watches the FILE SYSTEM, not the files in it. Since reading a file does not change the file system, there's nothing for the FileSystemWatcher to notify you of.
In order to write this, you need an in-depth knowledge of Windows internals and NTFS. I suggest start reading these:
Windows Internals - Part 1[
^]
Windows Internals - Part 2[
^]
Inside Windows Debugging[
^] - because you're not going to be able to get away from using WinDbg.
Advanced Windows Debugging[
^] - you ARE going to be doing kernel-level debugging for a project like this.