Did you try
searching[
^].
CNTFS[
^] is quite good.
But then, why does it need to be a raw driver? just do a recursive search for files. The find results of each file holds the size, shove this into a vector or something.
See
MSDN[
^] For an example find, when you encounter a directory just call the find function again on that directory.
I'd provide more info but I am on my laptop in a car.