branquinho wrote:Running the MSD i saw that the IRQ 0 is handled by your driver. My software also handles this IRQ, and i don´t call your interrupt handler after to run my interrupt handler. Even so your driver continues reading the USB.
What kind of use you do of IRQ 0 ?
Is normal your driver continues working well, even if i override your interrupt vector ?
It sounds like you've got a few things to learn about interrupts. IRQ 0 is the clock, and is ABSOLUTELY CRITICAL to the operations of the computer. You MUST chain to it either after or before it is handled by your program, even if it isn't used by my programs. Some IRQ's must be chained, some must not be chained, and with others it depends on the situation. IRQ 0 must ALWAYS be chained.
You can look at the source code for my programs to see exactly what happens inside the IRQ 0 handler. Many, if not most, TSR's and device drivers will intercept IRQ 0, and you shouldn't even question why a TSR would do it. You just need to chain to it.
A question for you would be why do you intercept IRQ 0 in a foreground application, anyway? I can't think of a legitimate reason to do that. There are other easier ways to determine when the hardware has generated an IRQ 0 in a foreground application that don't involve manipulating the IVT.
However, I don't know if that's related to your particular problem or not. It could be.
branquinho wrote:I was wrong saying the program prints on randomically parts of screen. I watch it with attention, and i saw that it prints always on the same positions (these two showed on the picture).
You'll need to do some more troubleshooting on your end to figure out exactly when and why this extra data gets written to the screen. E.g., does this happen all the time, or just when you issue a call-back request to the USB driver? Does it do it with the USB driver installed but no USB devices plugged in? What kind of USB device(s) are you trying to control?