Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 148 of file keyboard.c.
Referenced by i8042KbdDpcRoutine().
{ BOOLEAN FinishIrp = FALSE; KIRQL Irql; NTSTATUS Result = STATUS_INTERNAL_ERROR; /* Shouldn't happen */ /* If the interrupt happens before this is setup, the key * was already in the buffer. Too bad! */ if (!DeviceExtension->HighestDIRQLInterrupt) return; Irql = KeAcquireInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt); if (DeviceExtension->Packet.State == Idle && DeviceExtension->PacketComplete) { FinishIrp = TRUE; Result = DeviceExtension->PacketResult; DeviceExtension->PacketComplete = FALSE; } KeReleaseInterruptSpinLock(DeviceExtension->HighestDIRQLInterrupt, Irql); if (!FinishIrp) return; if (DeviceExtension->CurrentIrp) { DeviceExtension->CurrentIrp->IoStatus.Status = Result; IoCompleteRequest(DeviceExtension->CurrentIrp, IO_NO_INCREMENT); IoStartNextPacket(DeviceExtension->CurrentIrpDevice, FALSE); DeviceExtension->CurrentIrp = NULL; DeviceExtension->CurrentIrpDevice = NULL; } }