The problem is that you're thinking that you can treat the USB "port" the same as a serial or parallel port. You can't. Look at what USB stands for: Universial Serial
BUS
. It's an expansion bus, not unlike the slots on your motherboard. It's not a port.
The only way you're going to be able to intercept communication is with Kernel-level code, specifically, writing a USB Client Driver.
If you don't know what I'm talking about, start
here[
^]. More resources can be found
here[
^]
Good Luck!
Oh! I almost forgot... You're not going to do this in VB.NET or C#. Well, not unless you like rewriting lots of C constants, enums, structures, ..., in your code and PInvoking all kinds of driver functions.