I need a seasoned C / C++ driver programmer to write a kernel disk driver for windows operating system.
1. Simple translation of system commands to fixed length sparse file / variable length sparse file, whole partition, whole disk or network share (with impersonation support).
2. Full disk emulation - must pass all SATA disk tests, including power saving commands (the actual base disks need to spin down) and latest Windows 7 features like trim, also needs to gracefully resize "disk" if no room for file expansion on host partition
2.1. Virtual disk parameters should be stored such that the driver can still load as soon as possible in the boot process and remount the previously mounted images (mount persistence). It is required that the driver loads before any windows services
2.2. The driver should also lock any used partitions / disks such that the user can't accidently delete or format them in the disk management or elsewhere
3. Driver code must be strictly separated from zwxxx file manipulation functions. Special functions like trim must be provided in interface though not implemented for this project.
4. Must support multiple virtual disks, statistics collection / communication (extensible structures to be implemented (populated) at a later time) and multi - threading
5. Should work on 32bit and 64 bit windows operating systems Windows 2000, XP, Vista, 7, Server 2003, 2008 and derivatives.
Example: google filedisk driver for a simple yet effective example
- Must solve adequately all issues documented in filedisk driver's log
Expected result is a fully working compiled version of the driver + source not violating any existing copyrights with adequate instructions for (simple) installation on a production system. Copyright will be transferred to me upon project completion. A simple user mode application allowing driver manipulation / statistics viewing should be provided as well. This application should not require elevated privileges / trigger UAC prompt. This is part of a larger closed-source project.
If so desired, the project can be broken up into multiple milestones.