Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Som anges i Writing Postoperation Callback Routineskan efteroperationsanropsrutin för en IRP-baserad I/O-åtgärd anropas på IRQL = DISPATCH_LEVEL, såvida inte minifilterdrivrutinens återanropsrutin för föroperation synkroniserade åtgärden genom att returnera FLT_PREOP_SYNCHRONIZE eller åtgärden är en skapandeåtgärd, vilket är synkront. (Mer information om det här returvärdet finns i Returning FLT_PREOP_SYNCHRONIZE.)
För IRP-baserade I/O-åtgärder som inte redan har synkroniserats kan dock minifilterdrivrutiner använda till två tekniker för att säkerställa att slutförandebearbetningen utförs på IRQL-<= APC_LEVEL.
Den första tekniken är att återanropsrutinen efter operationen ska hålla kvar I/O-åtgärden tills bearbetningen kan slutföras på IRQL <= APC_LEVEL. Den här tekniken beskrivs i Väntar på en I/O-åtgärd i en efteroperationsåteranropsrutin.
Den andra tekniken är att minifilterdrivrutinens återanropsrutin efter operationen anropar FltDoCompletionProcessingWhenSafe. FltDoCompletionProcessingWhenSafe fördröjer endast I/O-åtgärden om den aktuella IRQL:n är >= DISPATCH_LEVEL. Annars kör den här rutinen omedelbart minifilterdrivrutinens SafePostCallback rutin. Den här tekniken beskrivs i FltDoCompletionProcessingWhenSafe.