ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

static VOID i8042PacketDpc ( IN PPORT_DEVICE_EXTENSION  DeviceExtension) [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;
    }
}

Generated on Fri May 25 2012 04:45:55 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.