Architectural question

Hi all,

I have to develop a USB custom driver to acquire 32 Mbytes of data from a device (bulk transfer mode) and store them on a disk file as faster as possible.

At the moment I am thinking on 3 differents architectures:
1… Perform ReadFile system calls from the application and queue each received data block to another thread in the application to overlap the WriteFile operations
2… Use a memory mapped file, allocated in the application, and use the virtual address returned by MapViewOfFile() as input parameter to the ReadFile() on the USB device
3… Write the data directly from kernel mode, may be with a kernel thread, using ZwCreateFile etc.etc.
Any idea, any suggestion, any architecture will be appreciated.

Best regards,
Paolo

>Use a memory mapped file, allocated in the application, and use the virtual

address returned by MapViewOfFile() as input parameter to the ReadFile()
on the USB device

This is the best way - the least number of memcpy()

Max