#endif /* LIBCAPTIVE */
+
+#ifdef LIBCAPTIVE
+/* file-scope of libcaptive/io/irp.c: */
+extern void IofCompleteRequest_register_APC(PIRP Irp,CCHAR PriorityBoost);
+#endif /* LIBCAPTIVE */
+
VOID FASTCALL
IofCompleteRequest(PIRP Irp,
CCHAR PriorityBoost)
/* FIXME: Why the hell should we bother with some damned APCs?!?
* Call it directly below!
*/
- DPRINT("IofCompleteRequest() would like to dispatch APC: F*ck off!\n");
+ DPRINT("IofCompleteRequest() dispatching APC: using g_idle_add_full()\n");
+ IofCompleteRequest_register_APC(Irp,PriorityBoost);
#else /* !LIBCAPTIVE */
DPRINT("Dispatching APC\n");
KeInitializeApc(&Irp->Tail.Apc,
(PVOID)Irp,
(PVOID)(ULONG)PriorityBoost,
KernelMode);
- DPRINT("Finished dispatching APC\n");
#endif /* !LIBCAPTIVE */
+ DPRINT("Finished dispatching APC\n");
}
-#ifndef LIBCAPTIVE
else
-#endif /* LIBCAPTIVE */
{
DPRINT("Calling completion routine directly\n");
IoSecondStageCompletion(Irp,PriorityBoost);