diff -Naur ndis.1.3.0-release/amd64/Makefile ndis.1.3.0-driverver/amd64/Makefile --- ndis.1.3.0-release/amd64/Makefile 2013-06-17 12:54:10.000000000 +0200 +++ ndis.1.3.0-driverver/amd64/Makefile 2013-04-28 16:10:26.000000000 +0200 @@ -158,6 +158,7 @@ @ echo "=====" @ echo "=== Info about currently built NDIS modules:" file $(NDIS) $(NDISAPI) + strings bcmndis | grep DriverVer || true ls -la $(NDIS) $(NDISAPI) @ echo "=== Info about currently loaded NDIS modules (may be not same as built, may be not loaded):" modinfo | egrep "$(NDISAPI)|$(NDIS)" || true diff -Naur ndis.1.3.0-release/Changelog ndis.1.3.0-driverver/Changelog --- ndis.1.3.0-release/Changelog 2013-06-17 12:53:57.000000000 +0200 +++ ndis.1.3.0-driverver/Changelog 2013-04-28 16:10:01.000000000 +0200 @@ -20,6 +17,9 @@ that they are not automatically loaded by the OS itself) - Moved an empty but required restore() function from C to ASM so that it is not optimized out (JPA's idea, good hit) +- Bake the original driver date and version (if available) into the ndis + wrapper module as part of its version. The string may be too long for + modinfo, but can be extracted with "strings bcmndis | grep DriverVer". ================ ndis.1.3.0.rc2, Apr 23, 2013 (Jean-Pierre Andre) - Implemented a mutex in KeAcquire/KeReleaseSpinLockFromDpcLevel diff -Naur ndis.1.3.0-release/if_ndis.c ndis.1.3.0-driverver/if_ndis.c --- ndis.1.3.0-release/if_ndis.c 2013-06-17 12:54:10.000000000 +0200 +++ ndis.1.3.0-driverver/if_ndis.c 2013-04-28 14:39:45.000000000 +0200 @@ -153,7 +153,11 @@ static struct modldrv ndis_modldrv = { &mod_driverops, /* Type of module. This one is a driver */ - "Ndiswrapper 1.3.0", /* short description */ + "Ndiswrapper 1.3.0" +#ifdef NDIS_DRIVER_VER + ", DriverVer=" NDIS_DRIVER_VER +#endif + , /* short description */ &ndis_dev_ops /* driver specific ops */ }; @@ -535,11 +542,13 @@ int e; extern mac_callbacks_t ndis_m_callbacks; - cmn_err(CE_CONT,"bcmndis %s at 0x%lx ndis_m_callbacks at 0x%lx\n", + cmn_err(CE_CONT,"%s %s at 0x%lx ndis_m_callbacks at 0x%lx\n", + NDIS_DRIVER_NAME, __DATE__, (long)drv_data, (long)&ndis_m_callbacks); if (layout_check()) { - cmn_err(CE_NOTE,"%s is badly compiled and fails layout checks," - " cannot run\n", NDIS_DRIVER_NAME); + cmn_err(CE_NOTE, + "%s is compiled badly, layout_check() failed, cannot safely run\n", + NDIS_DRIVER_NAME); return (ENOEXEC); } diff -Naur ndis.1.3.0-release/inf.c ndis.1.3.0-driverver/inf.c --- ndis.1.3.0-release/inf.c 2013-06-17 12:54:10.000000000 +0200 +++ ndis.1.3.0-driverver/inf.c 2013-04-28 14:37:35.000000000 +0200 @@ -279,6 +279,18 @@ char xpsec[256]; int found = 0; + /* Find driver version name */ + manf = find_assign("version", "DriverVer"); + if (manf != NULL) { + if (manf->vals[0] != NULL) { + fprintf (ofp, "#define NDIS_DRIVER_VER\t\"%s", manf->vals[0]); + } + if (manf->vals[1] != NULL) { + fprintf (ofp, ", %s", manf->vals[1]); + } + fprintf (ofp, "\"\n\n", manf->vals[1]); + } + /* Find manufacturer name */ manf = find_assign("Manufacturer", NULL);