NDIS WAN driver in Windows 8.1 and 2012 R2

We have an old NDIS WAN driver (NDIS version 4), which was originally developed for XP. It works fine all the years on Vista, Win 7, Win 8, Win 8.1 and 2012. But recently we found that it does not work on 2012 R2. The device manager shows the driver is installed OK and the device working properly, however when trying to create a dial-up connection, Windows could not find the device.

* Any suggestion what might cause the problem? It’s a little puzzling that it works fine on 2012 server and also on win 8.1. Just 2012 R2 does not work.

* If we want to update the driver to later version of NDIS (like NDIS 6), what should be the proper way to do it? Looks like NDIS WAN driver is no longer support in NDIS 5 or above, so I cannot just port it. I’m thinking rewriting the driver in CoNDIS WAN (follow the coisdn DDK sample, which is in NDIS 5.1), then port it to NDIS 6. Is this the right approach?

Thanks,
Jinhai

Old WAN drivers are propped up with the NDISWANLEGACY driver. Do you see this driver bind to yours? (!ndiskd.mopen). This driver is installed on Server 2012 R2, so as far as I know, your driver *should* still work there. As far as I know, Server and Client are the same. However, I personally don’t have much to do with WAN, so I can’t comment on whether there are any known issues with the Server SKU. I’m sorry I can’t help much.

As far as porting to NDIS 6, I of course encourage that, as it will future-proof your driver. (Well no software gets to live forever… but moving to NDIS 6 should extend the lifespan of your driver another 15-25 years, and hopefully we will all have retired by then.)

You’ve probably already seen this page which explains the two driver models: http://msdn.microsoft.com/en-us/library/windows/hardware/ff544883(v=vs.85).aspx . NDIS WAN is deprecated, and may be removed without additional notice from future OS versions. CoNDIS WAN is still fully-supported, including for NDIS 6. Any new driver work should use CoNDIS WAN, as that model has a future (and a past: the model even works on Windows XP).

You plan to start with coisdn, and move up to NDIS 6 from there. That is a reasonable plan. The CoNDIS signaling doesn’t change much between NDIS 5 and NDIS 6 – there are a few changes (NdisMCmRegisterAddressFamilyEx versus NdisMCmRegisterAddressFamily), but most of the general flow is similar.

The biggest changes you’ll see when moving from NDIS 5 to NDIS 6 are: different structures for datapath (NET_BUFFER_LIST versus NDIS_PACKET) and the requirement that miniports support Pause/Restart. As long as you’ve got these two things in the back of your mind while writing the NDIS 5 driver, it should be possible to change them in the NDIS 6 driver.

Thanks Jeffrey for the reply.

I checked with !ndiskd, compared with a working copy on win 8.1, the binding to NDISWANLEGACY is not there on 2012 R2, but it is present on win 8.1. I guess that is the cause of the problem. However, I cannot figure out why the binding is not created on 2012 R2, I checked the !ndiskd output and the registry entries, they all look the same on win 8.1 and 2012 R2. Any suggestion where I could go from here?

Thanks for the suggestion on porting to NDIS 6/CoNDIS, we will probably start doing it shortly. However, that probably take some time to code/test, and we are under some customer pressure to get this fixed now. So I still like to fix the current version on 2012 R2, or at least find out why it is not working.

Thanks again.
Jinhai