Hi all, I'm trying to get my function "OnInterrupt" called when I touch the device, but my functions isn't called. My "OnInterrupt" function is only called when I remove the device, because the irp is cancelled. Do anyone could help me to know why Completion routine "OnInterrupt" isn't called. I'm trying to read from a interrupt pipe. I'm very very worried because I really can wonder what is going wrong. Thanks very much Edgard Lima [email][/email] // Initialize the URB we use for reading the interrupt pipe UsbBuildInterruptOrBulkTransferRequest(urb, sizeof(_URB_BULK_OR_INTERRUPT_TRANSFER), pdx->pipeIn81, &pdx->intdata, NULL, 8, USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK, NULL); // Install "OnInterrupt" as the completion routine for the polling IRP. IoSetCompletionRoutine(Irp, (PIO_COMPLETION_ROUTINE) OnInterrupt, pdx, TRUE, TRUE, TRUE); PIO_STACK_LOCATION stack = IoGetNextIrpStackLocation(Irp); stack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; stack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB; stack->Parameters.Others.Argument1 = urb; status = IoCallDriver(pdx->LowerDeviceObject, Irp); KdPrint(("pIrp = %X, status = %X, Irp->IoStatus.Status = %X, USBDstatus = %X ", Irp, status, Irp->IoStatus.Status, URB_STATUS(pdx->PollingUrb))); output from KdPrint pIrp = 86FB8F00 status = 103 Irp->IoStatus.Status = 103 USBDstatus = 40000000