Below you will find changes you can make to a working Ethernet IM driver that will
allow it to function with NDISWAN adapters over TCP/IP. I found it extremely
difficult to figure this out so I hope you find this information beneficial. If you
are using the newest IMSAMP, it already works with NDISWAN if you follow step #6 below.
If not, you can find Jim Mateer's newest version of his excellent IM
driver sample at imdrv.zip
.
Here are the steps to follow:
1. Get NDISWAN to bind to your transport. Put something like this in your NetRules for your transport: MyIMTransport ndisWanAdapterDialOutIP non non 100
2. Prefix your corresponding IM adapter name with NdisWan so that you bind correctly to RasArp (e.g. NdisWanMyIMAdapter3)
3. Disable the binding of the real NDISWAN adapter from TCP/IP
4. Set the packet filter of the real NDISWAN adapter to forward BROADCAST and DIRECTED packets (do this in your ProtocolBindAdapter routine)
5. Report that your corresponding virtual IM adapter has a medium type of NdisMedium802_3 from MiniportInitialize (do not report NdisMediumWan)
6. Make sure the phone book entry you are using to dial has "IP header compression" disabled (Haven't figured out why this is necessary yet)
7. Other than these changes, pretend that you are coding an IM for an Ethernet adapter and you should be fine.