none
KERNEL_SECURITY_CHECK_FAILURE BSoD on RNDIS Device After Feature Update 1709 RRS feed

  • Question

  • [Moved this from the networking forum per moderator request]

    Hi, I have a device that uses RNDIS to communicate with a desktop application. The driver for it has been working for years, including on Windows 10. The driver is simply an INF file that calls rndis6.sys with the correct fields changed for the USB vendor and product ID, as well as device name. After installing Feature Update 1709, when the device is connected to a Windows 10 PC and turned on, the device starts to enumerate with Windows and then a BSoD happens with the error KERNEL_SECURITY_CHECK_FAILURE. I've rolled back Windows to just before the update and confirmed that 1709 has broken the driver. 

    I think this issue covers what actually happened in 1709 to break RNDIS: https://social.technet.microsoft.com/Forums/windows/en-US/9a44310c-c85a-4794-a927-198021b12b9f/1709-bug-with-rndismp6sysusb80236sys-dhcp-client-does-not-work?forum=win10itpronetworking I'm not too well versed in writing INF files so I'm not sure what I'm missing from mine, but I'm hoping this problem can be fixed with a correct INF. I generate my device.cat file from an INF using inf2cat. Then I sign the cat file and build the installer with IExpress.exe. 

    Not sure if this matters, but the RNDIS device is running Windows CE. I have another device that also connects with RNDIS but is running Linux and that does not cause this problem.

    The INF file for the broken device is below. Any help would be greatly appreciated!

    ; USB RNDIS driver installation file.
    
    [Version]
    Signature           = "$Windows NT$"
    Class               = Net
    ClassGUID           = {4d36e972-e325-11ce-bfc1-08002be10318}
    Provider            = %VENDOR%
    DriverVer=06/15/2015,7.0.6000.2015
    CatalogFile        = device.cat
    
    [Manufacturer]
    %VENDOR%         = RndisDevices,NT.5.1,NTx86,NTamd64,NTia64
    
    ; Decoration for x86 architecture
    [RndisDevices.NTx86]
    %RndisDevice%    = RNDIS.NT.6.0, USB\VID_1234&PID_5678
    
    ; Decoration for x64 architecture
    [RndisDevices.NTamd64]
    %RndisDevice%    = RNDIS.NT.6.0, USB\VID_1234&PID_5678
    
    ; Decoration for ia64 architecture
    [RndisDevices.NTia64]
    %RndisDevice%    = RNDIS.NT.6.0, USB\VID_1234&PID_5678
    
    [RndisDevices.NT.5.1]
    %RndisDevice%    = RNDIS.NT.5.1, USB\VID_1234&PID_5678
    
    ;@@@ This is the common setting for setup
    [ControlFlags]
    ExcludeFromSelect=*
    
    ; DDInstall section
    [RNDIS.NT.5.1]
    Characteristics = 0x84   ; NCF_PHYSICAL + NCF_HAS_UI
    BusType         = 15
    include         = netrndis.inf
    needs           = Usb_Rndis.ndi
    AddReg          = Rndis_AddReg_Win7
    
    [RNDIS.NT.5.1.Services]
    include     = netrndis.inf
    needs       = Usb_Rndis.ndi.Services
    
    ; References the in-build Netrndis.inf
    [RNDIS.NT.6.0]
    Characteristics = 0x84   ; NCF_PHYSICAL + NCF_HAS_UI
    BusType         = 15
    ; NEVER REMOVE THE FOLLOWING REFERENCE FOR NETRNDIS.INF
    include         = netrndis.inf
    needs           = usbrndis6.ndi
    AddReg          = Rndis_AddReg_Win7
    *IfType            = 6    ; IF_TYPE_ETHERNET_CSMACD.
    *MediaType         = 16   ; NdisMediumNative802_11
    *PhysicalMediaType = 14   ; NdisPhysicalMedium802_3
    *IfConnectorPresent = 0	; BOOLEAN
    *ConnectionType     = 1 ; NET_IF_CONNECTION_TYPE
    *DirectionType      = 0 ; NET_IF_DIRECTION_TYPE
    *AccessType         = 0 ; NET_IF_ACCESS_TYPE
    *HardwareLoopback   = 0 ; BOOLEAN
    
    ; DDInstal.Services section
    [RNDIS.NT.6.0.Services]
    include     = netrndis.inf
    needs       = usbrndis6.ndi.Services
    
    ; Optional registry settings. You can modify as needed.
    [RNDIS_AddReg_Win7] 
    HKR, NDI\params\Win7Property, ParamDesc,  0, %Win7_Property%
    HKR, NDI\params\Win7Property, type,       0, "edit"
    HKR, NDI\params\Win7Property, LimitText,  0, "12"
    HKR, NDI\params\Win7Property, UpperCase,  0, "1"
    HKR, NDI\params\Win7Property, default,    0, " "
    HKR, NDI\params\Win7Property, optional,   0, "1"
    
    ; No sys copyfiles - the sys files are already in-build 
    ; (part of the operating system).
    
    ; Modify these strings for your device as needed.
    [Strings]
    ; DO NOT MODIFY ServiceDisplayName!!
    ServiceDisplayName    = "USB RNDIS Adapter"
    VENDOR                = "My Company"
    RndisDevice           = "My Device"
    Win7_Property         = "My Device"


    Wednesday, January 31, 2018 2:45 PM

All replies

  • How come that your MediaType is NdisMediumNative802_11? For a RNDIS interface?

    -- pa

    Wednesday, January 31, 2018 5:07 PM
  • Hi Pavel,

    The INF was copied from [1] which has the MediaType set to that. My INF experience is very limited; what should it be? I added the IfConnectorPresent through HardwareLoopback values recently, as suggested by [2]; not sure if they're needed but they didn't affect behavior.

    [1] https://docs.microsoft.com/en-us/windows-hardware/drivers/network/remote-ndis-inf-template

    [2] https://docs.microsoft.com/en-us/windows-hardware/drivers/netcx/porting-ndis-miniport-drivers-to-netadaptercx

    Wednesday, January 31, 2018 6:05 PM
  • Hey skrawn,

    Sorry to revive an old thread, but were you able to find a solution for your RNDIS device? This issue has been plaguing me for a while now.
    Tuesday, January 22, 2019 8:59 PM
  • Do you still run 1709?

    -- pa

    Wednesday, January 23, 2019 12:13 AM
  • We have some machines still on 1709, but I'm even still seeing the issue on 1809.
    It seems pretty widespread with RNDIS devices. For example, plug an Android phone into a post-1709 Win10 machine and enable USB tethering, and you'll likely get a blue screen.
    Wednesday, January 23, 2019 4:57 PM
  • How do you install it? a custom INF file?

    -- pa

    Friday, January 25, 2019 1:41 AM