Set the readed size within the irp.
Modified: trunk/reactos/drivers/input/keyboard/keyboard.c

Modified: trunk/reactos/drivers/input/keyboard/keyboard.c
--- trunk/reactos/drivers/input/keyboard/keyboard.c	2005-04-30 17:30:05 UTC (rev 14882)
+++ trunk/reactos/drivers/input/keyboard/keyboard.c	2005-04-30 17:37:11 UTC (rev 14883)
@@ -457,7 +457,6 @@
    DPRINT("KbdDpcRoutine(DeviceObject %x, Irp %x)\n",
 	    DeviceObject,Irp);
    Irp->IoStatus.Status = STATUS_SUCCESS;
-   Irp->IoStatus.Information = 0;
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    IoStartNextPacket(DeviceObject,FALSE);
 }
@@ -592,8 +591,9 @@
 	DPRINT("KeysRequired %d KeysRead %x\n",KeysRequired,KeysRead);
 	if (KeysRead==KeysRequired)
 	  {
-	  	 PDEVICE_OBJECT DeviceObject = (PDEVICE_OBJECT) Context;
+	     PDEVICE_OBJECT DeviceObject = (PDEVICE_OBJECT) Context;
 	     KeInsertQueueDpc(&KbdDpc,DeviceObject,CurrentIrp);
+	     CurrentIrp->IoStatus.Information = KeysRead * sizeof(KEY_EVENT_RECORD);
 	     CurrentIrp=NULL;
 	  }
 	CHECKPOINT;
@@ -721,6 +721,7 @@
     }
    if ((stk->Parameters.Read.Length/sizeof(KEY_EVENT_RECORD))==NrToRead)
      {
+        Irp->IoStatus.Information = stk->Parameters.Read.Length;
 	return(TRUE);
      }
 
@@ -743,7 +744,6 @@
      {
         KIRQL oldIrql;
 	Irp->IoStatus.Status = STATUS_SUCCESS;
-	Irp->IoStatus.Information = 0;
 	IoCompleteRequest(Irp, IO_NO_INCREMENT);
 	oldIrql = KeGetCurrentIrql();
         if (oldIrql < DISPATCH_LEVEL)