Fast I/O Functions not being called

Discussion in 'Windows Vista Drivers' started by Dakota Ridge, Aug 24, 2007.

  1. Dakota Ridge

    Dakota Ridge Guest

    I'm developing a file system filter driver - same base functionality as
    FileSpy, but without all the useless bloat, complication, inefficiency and
    fluff.

    I have set up my fast I/O table in Driver Entry ... allocated it, checked
    and double checked every last field (including size ... it's 0x70), assigned
    it by

    DriverObject->FastIoDispatch = fastIoDispatch;

    I broke into KD and double checked every address. No crashes are occurring,
    no bugs are occurring. DriverObject exits with its FastIoDispatch field
    assigned to my very valid table. But no fast I/O functions ever get called.
    When I open non-Microsoft programs, all the disk I/O passes through my filter
    driver. The very first line of every fast I/O dispatch is a DbgPrint
    statement. I even tried DbgBreakPoint and a straight inline assembler _asm
    int 3. They're never called. The standard dispatch routines are being
    called just fine. Any program I run that comes from Microsoft leaves my
    driver dead in the water. There is no activity. All other programs run all
    disk I/O through my driver - when the disk is hit. I understand the
    difference; when fast I/O is used and why, but I don't understand why such a
    simple process is not working.

    Assuming nothing is wrong with my code, it must be something I'm leaving out
    (although this process is not difficult; how many things are there to leave
    out?). So I must be doing something stupid to disable these calls.
    Conceptually, are there any ideas?
     
    Dakota Ridge, Aug 24, 2007
    #1
    1. Advertisements

  2. Wrong newsgroup for file systems and file system filters.
     
    David J. Craig, Aug 24, 2007
    #2
    1. Advertisements

  3. Is FastIoCheckIfPossible ever called?
     
    Maxim S. Shatskih, Aug 25, 2007
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.