if (Flags & FO_SYNCHRONOUS_IO)
{
- KeWaitForSingleObject(&Ccb->ConnectEvent,
+ Status = KeWaitForSingleObject(&Ccb->ConnectEvent,
UserRequest,
Irp->RequestorMode,
(Flags & FO_ALERTABLE_IO),
NULL);
+ if ((Status == STATUS_USER_APC) || (Status == STATUS_KERNEL_APC) || (Status == STATUS_ALERTED))
+ Status = STATUS_CANCELLED;
}
DPRINT("NpfsConnectPipe() done (Status %lx)\n", Status);
TimeOut = NULL;
}
- Status = KeWaitForSingleObject(&Ccb->ConnectEvent,
- UserRequest,
- Irp->RequestorMode,
- (Ccb->FileObject->Flags & FO_ALERTABLE_IO),
- TimeOut);
+ Status = KeWaitForSingleObject(&Ccb->ConnectEvent,
+ UserRequest,
+ Irp->RequestorMode,
+ (Ccb->FileObject->Flags & FO_ALERTABLE_IO),
+ TimeOut);
+ if ((Status == STATUS_USER_APC) || (Status == STATUS_KERNEL_APC) || (Status == STATUS_ALERTED))
+ Status = STATUS_CANCELLED;
DPRINT("KeWaitForSingleObject() returned (Status %lx)\n", Status);
Irp->RequestorMode,
(Ccb->FileObject->Flags & FO_ALERTABLE_IO),
&TimeOut);
+ if ((Status == STATUS_USER_APC) || (Status == STATUS_KERNEL_APC) || (Status == STATUS_ALERTED))
+ Status = STATUS_CANCELLED;
DPRINT("KeWaitForSingleObject() returned (Status %lx)\n", Status);
KeInitializeEvent(&Event, SynchronizationEvent, FALSE);
Context->WaitEvent = &Event;
ExReleaseFastMutex(&Ccb->DataListLock);
- Status = KeWaitForSingleObject(&Event,
- UserRequest,
- Irp->RequestorMode,
- (FileObject->Flags & FO_ALERTABLE_IO),
+ KeWaitForSingleObject(&Event,
+ Executive,
+ KernelMode,
+ FALSE,
NULL);
- if ((Status == STATUS_USER_APC) || (Status == STATUS_KERNEL_APC) || (Status == STATUS_ALERTED))
- {
- Status = STATUS_CANCELLED;
- goto done;
- }
- if (!NT_SUCCESS(Status))
- {
- ASSERT(FALSE);
- }
ExAcquireFastMutex(&Ccb->DataListLock);
}
Irp->IoStatus.Information = 0;
ASSERT(IoGetCurrentIrpStackLocation(Irp)->FileObject != NULL);
- if (Status == STATUS_CANCELLED)
- goto done;
-
if (IoIsOperationSynchronous(Irp))
{
RemoveEntryList(&Context->ListEntry);