A file monitoring library (written in C++ or C#) is requiredthat will enable an application written in C# (which could be desktop orservice based) to monitor any windows process for any file activity that matchesthe process id, file criteria and operation criteria requested.
The library must support a store and forward model in which filebased events and paths are stored until the calling application retrieves andclears the logged events (up to a predefined limit at which point a queue willbe used to keep only the most recent file operations). It must have the abilityto be polled and to asynchronously notify the C# calling application that new filebased operations have occurred and are ready for consumption.
## Deliverables
**File Monitoring Library**
A file monitoring library (written in C++ or C#) is requiredthat will enable an application written in C# (which could be desktop orservice based) to monitor any windows process for any file activity that matchesthe process id, file criteria and operation criteria requested.
The library must support a store and forward model in which filebased events and paths are stored until the calling application retrieves andclears the logged events (up to a predefined limit at which point a queue willbe used to keep only the most recent file operations). It must have the abilityto be polled and to asynchronously notify the C# calling application that new filebased operations have occurred and are ready for consumption.
For example, the calling application may choose to monitorthe Excel process (provided as a process id supplied by the calling program) forall operations on .xls files including read, write, create, delete. It couldalso choose to monitor a photography application for all reads on .jpg basedfiles. Standard Win32 network based file operations should also be monitored.
The solution will run on all major Microsoft Windows basedoperating systems from Windows XP through to Windows 7, x32 and x64 operatingsystems. It must deliver source code based documentation, and a C# test programwhich demonstrates its usage and covers all code paths.
The solution will deliver all source code, along withsolution project and test files tested on Visual Studio 2010. Open source code maybe used as? part of the solution as longas it is declared and agreed to before development is started.
When responding to this project the developer will describe thehigh level techniques they will use to deliver the solution e.g. device driver,win32 api interceptor etc, along with an explanation of the relative pro's,con's and risks of this approach as compared to the alternatives.
The developer will also provide details of similar projectscompleted, and supply code snippets demonstrating their coding style.