I am writing a WDI driver following the guide here and my WDI initialisation is failing after completing the OID_WDI_SET_ADAPTER_CONFIGURATION response. I have also been comparing with the WDI sample and it seems they dont do much for this OID besides return a status success. I have also attempted the fix here: but still no success. I dont wanna just paste my code here so im just looking for some general areas to look into as to why its failing and if i need to paste some code id be happy to. Logs are below:
wdi_usb => NDIS Version: 60054
wdi_usb => NdisSetOptions
wdi_usb => WDI Miniport Successfully Initialised.
wdi_usb => NdisAllocateAdapter
wdi_usb => Number of USB pipes: 3
wdi_usb => Found USB BULK IN Pipe
wdi_usb => Found USB BULK OUT Pipe
wdi_usb => Found USB BULK OUT Pipe
wdi_usb => Successfully initialised adapter.
wdi_usb => NdisOpenAdapter
wdi_usb => NdisTalTxRxInitialize
wdi_usb => [OID_REQUEST] OID: 0xe4400025, Type: 0xc
wdi_usb => Handling OID_WDI_GET_ADAPTER_CAPABILITIES
wdi_usb => [OID_REQUEST] OID: 0xe4400055, Type: 0xc
wdi_usb => Handling OID_WDI_SET_ADAPTER_CONFIGURATION
wdi_usb => NdisTalTxRxDeinitialize
wdi_usb => NdisCloseAdapter
wdi_usb => NdisFreeAdapter
wdi_usb => NdisUnload
Thanks!
So after spending some time debugging, I have found roughly where the error is caused by I am unable to pinpoint the exact position. Below is an extract from the WDI WPP traces:
[0]0004.0088::02/02/2025-22:47:19.494 [sys]<== NdisMSetMiniportAttributes: Miniport FFFF91086A6871A0, AttributeType 9e, Status 0
[0]0004.0088::02/02/2025-22:47:19.495 [sys]==> NdisOpenConfigurationEx: ConfigObject FFFFF48AB53426D0
[0]0004.0088::02/02/2025-22:47:19.495 [sys]==> NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.498 [sys]<== NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.500 [sys]<== NdisOpenConfigurationEx: ConfigObject FFFFF48AB53426D0, Status 0
[0]0004.0088::02/02/2025-22:47:19.502 [sys]==> NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7010
[0]0004.0088::02/02/2025-22:47:19.504 [sys]<== NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7010
[0]0004.0088::02/02/2025-22:47:19.506 [sys]==> NdisCloseConfiguration: ConfigurationHandle FFFF91086A7C7010
[0]0004.0088::02/02/2025-22:47:19.508 [sys]<== NdisCloseConfiguration: ConfigurationHandle 0000000000000000
[0]0004.0088::02/02/2025-22:47:19.511 [sys]==> NdisOpenConfigurationEx: ConfigObject FFFFF48AB53426D0
[0]0004.0088::02/02/2025-22:47:19.513 [sys]==> NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.515 [sys]<== NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.517 [sys]<== NdisOpenConfigurationEx: ConfigObject FFFFF48AB53426D0, Status 0
[0]0004.0088::02/02/2025-22:47:19.517 [sys]==> NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C6D50
[0]0004.0088::02/02/2025-22:47:19.518 [sys]<== NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C6D50
[0]0004.0088::02/02/2025-22:47:19.518 [sys]==> NdisCloseConfiguration: ConfigurationHandle FFFF91086A7C6D50
[0]0004.0088::02/02/2025-22:47:19.518 [sys]<== NdisCloseConfiguration: ConfigurationHandle 0000000000000000
[0]0004.0088::02/02/2025-22:47:19.519 [sys]==> NdisOpenConfigurationEx: ConfigObject FFFFF48AB53425D8
[0]0004.0088::02/02/2025-22:47:19.519 [sys]==> NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.519 [sys]<== NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[0]0004.0088::02/02/2025-22:47:19.520 [sys]<== NdisOpenConfigurationEx: ConfigObject FFFFF48AB53425D8, Status 0
[0]0004.0088::02/02/2025-22:47:19.520 [sys]==> NdisReadNetworkAddress: ConfigurationHandle FFFF91086A7C6A90
[0]0004.0088::02/02/2025-22:47:19.520 [sys]==> NdisReadConfiguration: Keyword: NetworkAddress
[0]0004.0088::02/02/2025-22:47:19.520 [sys]<== NdisReadConfiguration
[0]0004.0088::02/02/2025-22:47:19.520 [sys]<== NdisReadNetworkAddress: ConfigurationHandle FFFF91086A7C6A90
[0]0004.0088::02/02/2025-22:47:19.521 [sys]==> NdisCloseConfiguration: ConfigurationHandle FFFF91086A7C6A90
[0]0004.0088::02/02/2025-22:47:19.521 [sys]<== NdisCloseConfiguration: ConfigurationHandle 0000000000000000
[0]0004.0088::02/02/2025-22:47:19.522 [sys]NdisGetVersion: Returning version 60054
[0]0004.0088::02/02/2025-22:47:19.522 [sys]==> NdisWriteErrorLogEntry: Miniport FFFF91086A6871A0, ErrorCode c0001390
[0]0004.0088::02/02/2025-22:47:19.523 [sys]<== NdisWriteErrorLogEntry: Miniport FFFF91086A6871A0, ErrorCode c0001390
[2]0004.1634::02/02/2025-22:47:19.523 [sys]==> NdisCloseConfiguration: ConfigurationHandle FFFF91086A7C6A50
[2]0004.1634::02/02/2025-22:47:19.523 [sys]<== NdisCloseConfiguration: ConfigurationHandle 0000000000000000
[1]0004.01B8::02/02/2025-22:47:19.523 [sys]==> NdisOpenConfigurationEx: ConfigObject FFFFF48AB56D77A0
[1]0004.01B8::02/02/2025-22:47:19.523 [sys]==> NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[1]0004.01B8::02/02/2025-22:47:19.523 [sys]<== NdisOpenConfiguration: WrapperConfigurationContext FFFF910869358140
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]<== NdisOpenConfigurationEx: ConfigObject FFFFF48AB56D77A0, Status 0
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]==> NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7090
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]<== NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7090
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]==> NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7090
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]<== NdisWriteConfiguration: ConfigurationHandle FFFF91086A7C7090
[1]0004.01B8::02/02/2025-22:47:19.524 [sys]==> NdisCloseConfiguration: ConfigurationHandle FFFF91086A7C7090
[1]0004.01B8::02/02/2025-22:47:19.525 [sys]<== NdisCloseConfiguration: ConfigurationHandle 0000000000000000
[0]0004.1634::02/02/2025-22:47:19.527 [sys]<End miniport's InitializeHandlerEx. Miniport=FFFF91086A6871A0, Driver=FFFF9108698D1A30, Staus=0xc0000001
[0]0004.1634::02/02/2025-22:47:19.527 [sys]ndisMInitializeAdapter: Miniport FFFF91086A6871A0, InitializeHandler returned 0xc0000001(NDIS_STATUS_FAILURE)
[0]0004.1634::02/02/2025-22:47:19.528 [sys]ndisMInitializeAdapter: Miniport FFFF91086A6871A0 INIT FAILURE: Dereferencing mini driver block
[0]0004.1634::02/02/2025-22:47:19.528 [sys]<== ndisMInitializeAdapter: Miniport FFFF91086A6871A0, Status 0xc0000001(NDIS_STATUS_FAILURE)
[0]0004.1634::02/02/2025-22:47:19.528 [sys]Adapter Initialized: Miniport FFFF91086A6871A0, WDI USB Wireless Adapter v6.50 Status c0000001
It seems like the last configuration read is the NetworkAddress, but I have a valid NetworkAddress set and replicated the calls and was able to succesfully attain it via NdisReadConfiguration. I have been playing around the the .inf file but still no success. I have also stepped through this NdisReadNetworkAddress and compared with the dissassembly it appears something is failing which is strange and it returns 1 as the status code in the NDIS_STATUS pointer passed to it. I also set the same mac address in the InterfaceAttributes.InterfaceCapabilities when handling the OID_WDI_GET_ADAPTER_CAPABILITIES Oid.
[0]0004.0088::02/02/2025-22:47:19.522 [sys]==> NdisWriteErrorLogEntry: Miniport FFFF91086A6871A0, ErrorCode c0001390
[0]0004.0088::02/02/2025-22:47:19.523 [sys]<== NdisWriteErrorLogEntry: Miniport FFFF91086A6871A0, ErrorCode c0001390
This error code specifies:
//
// MessageId: EVENT_NDIS_NETWORK_ADDRESS
//
// MessageText:
//
// %2 : Has encountered an invalid network address.
//
#define EVENT_NDIS_NETWORK_ADDRESS 0xC0001390L
However after again checking the source code and dissassembly it appears its set as a generic handler to "guess" the most likely cause of the error, so while it may indeed be a problem with the mac address, it also may not.