Hi from Germany,
I am currently porting our NDIS 6.20 miniport driver (which runs without any problems since many years) to NDIS Version 6.60.
The miniport driver runs on a PCIx network card.
When starting my miniport driver with the NDIS 6.60 version, the InitializeHandlerEx handler is called and returns NDIS_STATUS_SUCCESS.
The error or problem is, that NDIS calls my HaltHandlerEx directly after the successful InitializeHandlerEx handler call.
I have no idea why or where to search.
In between InitializeHandlerEx and HaltHandlerEx no other NDIS callback function is called except one interrupt and DPC call from the firmware, telling me, that the link is down, which I report to NDIS with NdisMIndicateStatusEx and a NDIS_STATUS_INDICATION.
This is my NdisMRegisterMiniportDriver function:
MP162XChar.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS;
MP162XChar.Header.Revision = NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
MP162XChar.Header.Size = NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
MP162XChar.MajorNdisVersion = 6;
MP162XChar.MinorNdisVersion = 60;
MP162XChar.MajorDriverVersion = 0;
MP162XChar.MinorDriverVersion = 0;
MP162XChar.Flags = 0;
MP162XChar.SetOptionsHandler = NULL;
MP162XChar.InitializeHandlerEx = MP162XInitializeEx;
MP162XChar.HaltHandlerEx = MP162XHaltEx;
MP162XChar.UnloadHandler = DriverUnload;
MP162XChar.PauseHandler = MP162XPause;
MP162XChar.RestartHandler = MP162XRestart;
MP162XChar.OidRequestHandler = MP162XOidRequest;
MP162XChar.SendNetBufferListsHandler = MP162XSendNetBufferLists;
MP162XChar.ReturnNetBufferListsHandler = MP162XReturnNetBufferLists;
MP162XChar.CheckForHangHandlerEx = NULL;
MP162XChar.ResetHandlerEx = NULL;
MP162XChar.ShutdownHandlerEx = MP162XShutdownEx;
MP162XChar.DevicePnPEventNotifyHandler = MP162XDevicePnPEventNotify;
MP162XChar.CancelSendHandler = MP162XCancelSend;
MP162XChar.CancelOidRequestHandler = MP162XCancelOidRequest;
MP162XChar.DirectOidRequestHandler = NULL;
MP162XChar.CancelDirectOidRequestHandler= NULL;
status = NdisMRegisterMiniportDriver(DriverObject, RegistryPath, (PNDIS_HANDLE)gMiniportDriverContext, &MP162XChar, &NdisMiniportDriverHandle);
Any idea, where to look or why NDIS calls my HaltHandlerEx?
Thanks a lot.
Carsten