+ntoskrnl/io/cancel.c
[reactos.git] / ntoskrnl / io / cancel.c
index 0b711fd..c73c0e9 100644 (file)
@@ -39,11 +39,14 @@ static KSPIN_LOCK CancelSpinLock;
 
 /* FUNCTIONS *****************************************************************/
 
+#ifndef LIBCAPTIVE
+
 NTSTATUS STDCALL
 NtCancelIoFile (IN     HANDLE                  FileHandle,
                OUT     PIO_STATUS_BLOCK        IoStatusBlock)
 {
   UNIMPLEMENTED;
+  return(STATUS_NOT_IMPLEMENTED);
 }
 
 BOOLEAN STDCALL 
@@ -56,14 +59,17 @@ IoCancelIrp(PIRP Irp)
    IoAcquireCancelSpinLock(&oldlvl);
    Irp->Cancel = TRUE;
    if (Irp->CancelRoutine == NULL)
-     {
-       return(FALSE);
-     }
-   Irp->CancelRoutine(Irp->Stack[0].DeviceObject, Irp);
-   IoReleaseCancelSpinLock(oldlvl);
+   {
+      IoReleaseCancelSpinLock(oldlvl);
+      return(FALSE);
+   }
+   Irp->CancelIrql = oldlvl;
+   Irp->CancelRoutine(IoGetCurrentIrpStackLocation(Irp)->DeviceObject, Irp);
    return(TRUE);
 }
 
+#endif /* LIBCAPTIVE */
+
 VOID 
 IoInitCancelHandling(VOID)
 {