engine rpm signal

Can arduino read reliably rpm of the internal combustion engine via negative injector signal? I am looking at the 0-17k rpm. Can I use 2n3906 transistor to read it reliably or should I get a Schmitt trigger?

2nd question, can I read exact time in milliseconds the amount of the time that the injector stays open, once again, needs to be pretty reliable.

Thanks.

You should be able to do this, but you will need to design some interface circuitry which can present a clean signal to an Arduino digital input. Unless you know exactly what the signal looks like you will have to experiment with it.