Jump to content

Recommended Posts

Posted (edited)

@Mov AX, 0xDEAD

can you see, why the i211 works with kdnet.dll (better kdstub.dll) from win8.1

but the i219 not

Dietmar

EDIT: I see, that only the i211 gets attention in kdstub.dll and this via e1000_init_nvm_params_i211 proc near.

So, may be that for the i211, i217, i218 those nvm parameter are the same.

But nvm is different on i219.

 

EDIT2:

The i211 has a transmit buffer of 128 KB and a receive buffer of 128 KB.

In contrast, the i219 has a larger memory cache with a transmit buffer of 256 KB and a receive buffer of 256 KB.

 

EDIT3:

The i211 has a NVM size of 64KB.

The i219 Ethernet controller uses a larger NVM size of 256KB.

Edited by Dietmar

Posted (edited)

Is there a Vista bit32 driver for i219

Dietmar

EDIT:

This is, what I have found for Vista bit32.

The driver with "r" goes up to i210 and may be worth a try.

This "r" driver fullfilles all dependencies under win7 SP1, but does not work direct for the i211 or i219

https://ufile.io/bk1awpvj

Edited by Dietmar
  • 1 month later...
Posted

Has anyone thought about or managed to add the support for NDIS LWF drivers to XP in this forum? What about WFP?

Because I think these two are a very important part of supporting many of vista+ programs.

  • 7 months later...
Posted (edited)

@Dietmar

I thought I'd try and take another shot at porting NDIS 6 to XP.

I got a D1 BSOD in netio.sys this time.

https://ibb.co/q5VjMMh

My most recent build if you want to try and debug, no rush.

https://fastupload.io/pOM4uar97jSEMZn/file

 

edit:

looking at your last debug log from when you got a D1 BSOD i netio.sys I looked at the point of failure in a disassembler and from what I can tell I think it has to do with the hashtable functions that I stubbed, might try to implement.

Edited by Damnation
  • 1 month later...
Posted
On 6/6/2022 at 2:12 PM, Dietmar said:

I just test, that your ntoskrn8.sys together with the files from Longhorn 5048 is

downward compatible with i211 on the Asrock z370 k6 board.

So, just now on this board runs ndis6 under XP SP3

WOW, How to patch driver for the WinXP 64-bit?

  • 1 year later...
Posted

@Dietmar

I thought I'd have another go at trying to get Windows 7 ndis.sys to work on XP, now trying using AI to help reverse engineer assembly into C.

This time round I get a 7F 0.0.0.0 Divide by Zero BSOD.

If you have time, can you try and find where it's happening in ntoskrn8.sys?

https://buzzheavier.com/cy852zg5l602

Posted

@Damnation

This way will not work.

There are registry entries from Win7 and a lot more.

The "easiest" way would be something like this.

It is like for me to make a Graphik card to work in XP, which work hardly in win7

Dietmar

XP NDIS6 BRIDGE v1 – EXACT FILE LIST WITH FUNCTION NAMES
========================================================

Goal
----
Build the first bootstrappable version of an XP-side NDIS6 bridge for ONE wired Ethernet miniport family.
This is NOT a full Vista/7 stack. It is a narrow, instrumented v1.

Build products
--------------
1) n6host.sys
   - hosts the target NDIS 6 miniport
   - exports the bridge-side NDIS6-facing services/callback environment

2) xpim.sys
   - XP NDIS 5.1 intermediate/virtual miniport side
   - exposes an XP-visible adapter path

3) optional later:
   - importscan.exe
   - oiddump.exe

Directory layout
----------------
ndis6xp_bridge/
  common/
  n6host/
  xpim/
  glue/
  test/
  docs/

======================================================================
1) COMMON HEADERS / SHARED CORE
======================================================================

common/bridge_types.h
---------------------
Purpose:
- master type definitions
- adapter state enum
- packet ownership enum
- bridge-wide constants

Must contain:
- BRIDGE_ADAPTER
- BRIDGE_NBL
- BRIDGE_XP_PACKET
- BRIDGE_OID_ENTRY
- BRIDGE_LINK_STATE
- BRIDGE_STATS
- BRIDGE_CONFIG
- enum BRIDGE_ADAPTER_STATE
- enum BRIDGE_SEND_STATE
- enum BRIDGE_RECV_STATE

common/bridge_status.h
----------------------
Purpose:
- unified status mapping

Must contain:
- BridgeStatusFromNdis6(...)
- BridgeStatusToNdis5(...)
- BridgeStatusToNtStatus(...)
- BridgeStatusToWin32(...)

common/bridge_debug.h
---------------------
Purpose:
- tracing / asserts / log categories

Must contain:
- BridgeTraceInit(...)
- BridgeTrace(...)
- BridgeTraceOid(...)
- BridgeTraceSend(...)
- BridgeTraceRecv(...)
- BridgeTraceState(...)
- BridgeBugCheckPoint(...)

common/bridge_pool.h
--------------------
Purpose:
- packet/NBL/context pool helpers

Must contain:
- BridgePoolInit(...)
- BridgePoolShutdown(...)
- BridgeAllocAdapterCtx(...)
- BridgeFreeAdapterCtx(...)
- BridgeAllocSendCtx(...)
- BridgeFreeSendCtx(...)
- BridgeAllocRecvCtx(...)
- BridgeFreeRecvCtx(...)

common/bridge_lock.h
--------------------
Purpose:
- wrapper layer for spin locks, events, refs

Must contain:
- BridgeLockInit(...)
- BridgeLockAcquire(...)
- BridgeLockRelease(...)
- BridgeRefInit(...)
- BridgeRefGet(...)
- BridgeRefPut(...)
- BridgeEventInit(...)
- BridgeEventSet(...)
- BridgeEventWait(...)

common/bridge_queue.h
---------------------
Purpose:
- generic queue/ring helpers

Must contain:
- BridgeQueueInit(...)
- BridgeQueuePush(...)
- BridgeQueuePop(...)
- BridgeQueueFlush(...)
- BridgeQueueIsEmpty(...)

common/bridge_adapter.h
-----------------------
Purpose:
- adapter object lifecycle

Must contain:
- BridgeAdapterCreate(...)
- BridgeAdapterDestroy(...)
- BridgeAdapterStart(...)
- BridgeAdapterStop(...)
- BridgeAdapterPause(...)
- BridgeAdapterRestart(...)
- BridgeAdapterReset(...)
- BridgeAdapterSetLinkState(...)
- BridgeAdapterGetByHandle(...)
- BridgeAdapterReference(...)
- BridgeAdapterDereference(...)

common/bridge_oid.h
-------------------
Purpose:
- OID mapping and request context definitions

Must contain:
- BridgeOidInit(...)
- BridgeOidBuildMap(...)
- BridgeOidLookupN6ToXp(...)
- BridgeOidLookupXpToN6(...)
- BridgeOidIsSupported(...)
- BridgeOidNeedStub(...)
- BridgeOidNeedHardFail(...)

common/bridge_nbl.h
-------------------
Purpose:
- NBL/NB translation declarations

Must contain:
- BridgeNblInit(...)
- BridgeNblShutdown(...)
- BridgeNblFromXpPacket(...)
- BridgeNblToXpPacket(...)
- BridgeCloneNetBufferList(...)
- BridgeFreeNetBufferListCtx(...)
- BridgeMapMdlChain(...)
- BridgeCopyPayloadIfNeeded(...)

common/bridge_xp_packet.h
-------------------------
Purpose:
- XP packet translation declarations

Must contain:
- BridgeXpPacketInit(...)
- BridgeXpPacketFromNbl(...)
- BridgeXpPacketCompleteSend(...)
- BridgeXpPacketIndicateReceive(...)
- BridgeXpPacketReturn(...)

common/bridge_exports.h
-----------------------
Purpose:
- bridge-private interface between n6host and xpim

Must contain:
- BridgeRegisterXpEdge(...)
- BridgeUnregisterXpEdge(...)
- BridgeSubmitOidFromXp(...)
- BridgeSubmitSendFromXp(...)
- BridgeReturnRecvFromXp(...)
- BridgeIndicateRecvToXp(...)
- BridgeCompleteSendToXp(...)
- BridgeNotifyLinkToXp(...)

======================================================================
2) N6HOST.SYS – NDIS6-FACING HOST SIDE
======================================================================

n6host/n6host_main.c
--------------------
Purpose:
- DriverEntry
- global init / shutdown
- export-table bring-up

Must implement:
- DriverEntry(...)
- N6HostUnload(...)
- N6HostGlobalInit(...)
- N6HostGlobalShutdown(...)

n6host/n6host_driver.c
----------------------
Purpose:
- target miniport load/registration coordination

Must implement:
- N6HostRegisterMiniportDriver(...)
- N6HostDeregisterMiniportDriver(...)
- N6HostLoadTargetMiniport(...)
- N6HostUnloadTargetMiniport(...)
- N6HostResolveTargetImports(...)

n6host/n6host_exports.c
-----------------------
Purpose:
- the MOST IMPORTANT file in v1
- implement the NDIS6-facing support APIs the chosen target miniport imports

Must implement in v1 at minimum:
- NdisAllocateMemoryWithTagPriority(...)
- NdisFreeMemory(...)
- NdisAllocateSpinLock(...)
- NdisFreeSpinLock(...)
- NdisAcquireSpinLock(...)
- NdisReleaseSpinLock(...)
- NdisInitializeEvent(...)
- NdisSetEvent(...)
- NdisResetEvent(...)
- NdisWaitEvent(...)
- NdisMRegisterMiniportDriver(...)
- NdisMDeregisterMiniportDriver(...)
- NdisMSetMiniportAttributes(...)
- NdisMIndicateStatusEx(...)
- NdisMRegisterInterruptEx(...)
- NdisMDeregisterInterruptEx(...)
- NdisMSynchronizeWithInterruptEx(...)
- NdisMQueueDpcEx(...)
- NdisAllocateNetBufferListPool(...)
- NdisFreeNetBufferListPool(...)
- NdisAllocateNetBufferAndNetBufferList(...)
- NdisFreeNetBufferList(...)
- NdisAllocateMdl(...)
- NdisFreeMdl(...)
- NdisQueryMdl(...)
- NdisAllocateCloneNetBufferList(...)
- NdisFreeCloneNetBufferList(...)
- NdisGetDataBuffer(...)
- NdisOidRequestComplete(...)
- NdisMSendNetBufferListsComplete(...)
- NdisMIndicateReceiveNetBufferLists(...)
- NdisMReturnNetBufferLists(...)
- NdisScheduleWorkItem(...)
- NdisCancelTimerObject(...)
- NdisAllocateTimerObject(...)
- NdisSetTimerObject(...)
- NdisFreeTimerObject(...)

Possible stubs for early v1:
- NdisOpenConfigurationEx(...)
- NdisCloseConfiguration(...)
- NdisReadConfiguration(...)
- NdisWriteConfiguration(...)
- NdisRegisterDeviceEx(...)
- NdisDeregisterDeviceEx(...)
- NdisMGetBusData(...)
- NdisMSetBusData(...)
- NdisIfAddIfStackEntry(...)
- NdisIfDeleteIfStackEntry(...)

Hard-fail for unsupported v1 features:
- NdisFRegisterFilterDriver(...)
- NdisFIndicateReceiveNetBufferLists(...)
- NdisAllocateIoWorkItem(...)
- advanced QoS / SR-IOV / VMQ / RSS helpers not needed by target driver

n6host/n6host_miniport.c
------------------------
Purpose:
- the callback table that the target miniport registers
- lifecycle/state machine

Must implement:
- N6MiniportInitializeEx(...)
- N6MiniportHaltEx(...)
- N6MiniportPause(...)
- N6MiniportRestart(...)
- N6MiniportResetEx(...)
- N6MiniportCheckForHangEx(...)
- N6MiniportShutdownEx(...)
- N6MiniportOidRequest(...)
- N6MiniportCancelOidRequest(...)
- N6MiniportSendNetBufferLists(...)
- N6MiniportReturnNetBufferLists(...)
- N6MiniportCancelSendNetBufferLists(...)
- N6MiniportDevicePnPEventNotify(...)
- N6MiniportAdapterShutdown(...)
- N6MiniportSetOptions(...)

n6host/n6host_oid.c
-------------------
Purpose:
- NDIS6 OID request engine
- translate to bridge OID model

Must implement:
- N6OidInit(...)
- N6OidRequestDispatch(...)
- N6OidHandleQuery(...)
- N6OidHandleSet(...)
- N6OidHandleMethod(...)
- N6OidCompleteFromXp(...)
- N6OidBuildSupportedList(...)
- N6OidFillGeneralStats(...)
- N6OidFillLinkState(...)
- N6OidApplyPacketFilter(...)
- N6OidApplyMulticastList(...)

n6host/n6host_send.c
--------------------
Purpose:
- send path from NDIS6 miniport into bridge internals

Must implement:
- N6SendNetBufferLists(...)
- N6SendOneNbl(...)
- N6SendQueueInsert(...)
- N6SendKickXpEdge(...)
- N6SendCompleteFromXp(...)
- N6CancelSendNetBufferLists(...)
- N6FlushSendQueue(...)

n6host/n6host_recv.c
--------------------
Purpose:
- receive indication path toward NDIS6 miniport callbacks

Must implement:
- N6IndicateReceiveToMiniport(...)
- N6BuildRecvNbl(...)
- N6ReturnRecvFromMiniport(...)
- N6RecycleRecvCtx(...)
- N6FlushRecvPath(...)

n6host/n6host_nbl.c
-------------------
Purpose:
- NET_BUFFER / NET_BUFFER_LIST helpers and ownership tracking

Must implement:
- N6NblCreateFromXpPacket(...)
- N6NblCreateForReceive(...)
- N6NblClone(...)
- N6NblMapPayload(...)
- N6NblUnmapPayload(...)
- N6NblCompleteSend(...)
- N6NblReturnReceive(...)
- N6NblRelease(...)

n6host/n6host_mem.c
-------------------
Purpose:
- central memory helpers

Must implement:
- N6MemAlloc(...)
- N6MemFree(...)
- N6MemAllocTag(...)
- N6MemZero(...)
- N6MemCopy(...)

n6host/n6host_dma.c
-------------------
Purpose:
- DMA/common-buffer helpers only if target miniport needs them

Must implement:
- N6DmaInit(...)
- N6DmaShutdown(...)
- N6AllocateCommonBuffer(...)
- N6FreeCommonBuffer(...)
- N6MapSharedMemory(...)
- N6UnmapSharedMemory(...)

n6host/n6host_intr.c
--------------------
Purpose:
- interrupt/DPC bridge

Must implement:
- N6InterruptRegister(...)
- N6InterruptDeregister(...)
- N6InterruptIsr(...)
- N6InterruptDpc(...)
- N6InterruptSync(...)
- N6InterruptDisable(...)
- N6InterruptEnable(...)

n6host/n6host_pnp.c
-------------------
Purpose:
- device and adapter PnP events

Must implement:
- N6PnpEventNotify(...)
- N6PnpSurpriseRemove(...)
- N6PnpQueryRemove(...)
- N6PnpCancelRemove(...)

n6host/n6host_power.c
---------------------
Purpose:
- minimal power handling for v1

Must implement:
- N6PowerInit(...)
- N6PowerSetState(...)
- N6PowerQueryState(...)
- N6PowerShutdown(...)

n6host/n6host_timer.c
---------------------
Purpose:
- timer wrappers

Must implement:
- N6TimerCreate(...)
- N6TimerSet(...)
- N6TimerCancel(...)
- N6TimerDelete(...)

n6host/n6host_workitem.c
------------------------
Purpose:
- passive-level deferred work

Must implement:
- N6WorkItemInit(...)
- N6WorkItemQueue(...)
- N6WorkItemRun(...)
- N6WorkItemShutdown(...)

n6host/n6host_util.c
--------------------
Purpose:
- small helpers

Must implement:
- N6UtilCopyMac(...)
- N6UtilCompareMac(...)
- N6UtilClampMtu(...)
- N6UtilUpdateStats(...)

n6host/n6host.def
-----------------
Purpose:
- export names if you choose explicit exports for the target miniport loader path

Must export at minimum:
- DriverEntry
- plus every synthetic NDIS6 helper that the target miniport is linked against if direct binding is used

n6host/sources
n6host/makefile
n6host/n6host.inf
-----------------
Purpose:
- WDK 7600 build
- install as bridge host service

======================================================================
3) XPIM.SYS – XP NDIS 5.1 SIDE
======================================================================

xpim/xpim_main.c
----------------
Purpose:
- DriverEntry / global init for XP side

Must implement:
- DriverEntry(...)
- XpimUnload(...)
- XpimGlobalInit(...)
- XpimGlobalShutdown(...)

xpim/xpim_protocol.c
--------------------
Purpose:
- NDIS 5.1 protocol edge downward/upward binding control

Must implement:
- XpProtoBindAdapter(...)
- XpProtoUnbindAdapter(...)
- XpProtoOpenAdapterComplete(...)
- XpProtoCloseAdapterComplete(...)
- XpProtoResetComplete(...)
- XpProtoRequestComplete(...)
- XpProtoStatus(...)
- XpProtoStatusComplete(...)
- XpProtoReceive(...)
- XpProtoReceivePacket(...)
- XpProtoReceiveComplete(...)
- XpProtoSendComplete(...)
- XpProtoTransferDataComplete(...)
- XpProtoPnPEvent(...)
- XpProtoUnload(...) 

xpim/xpim_miniport.c
--------------------
Purpose:
- XP-visible virtual miniport edge

Must implement:
- XpMiniportInitialize(...)
- XpMiniportHalt(...)
- XpMiniportReset(...)
- XpMiniportQueryInformation(...)
- XpMiniportSetInformation(...)
- XpMiniportSend(...)
- XpMiniportSendPackets(...)
- XpMiniportReturnPacket(...)
- XpMiniportTransferData(...)
- XpMiniportCheckForHang(...)
- XpMiniportDisableInterrupt(...)
- XpMiniportEnableInterrupt(...)
- XpMiniportHandleInterrupt(...)
- XpMiniportISR(...)
- XpMiniportPnPEventNotify(...)
- XpMiniportAdapterShutdown(...)

xpim/xpim_bind.c
----------------
Purpose:
- adapter binding bookkeeping

Must implement:
- XpBindCreate(...)
- XpBindDestroy(...)
- XpBindLookup(...)
- XpBindAttachBridge(...)
- XpBindDetachBridge(...)

xpim/xpim_oid.c
---------------
Purpose:
- XP OID request translation

Must implement:
- XpOidQueryInformation(...)
- XpOidSetInformation(...)
- XpOidBuildSupportedList(...)
- XpOidCompleteFromN6(...)
- XpOidMapToBridge(...)
- XpOidMapFromBridge(...)

xpim/xpim_send.c
----------------
Purpose:
- send path from XP into bridge

Must implement:
- XpSendPacket(...)
- XpSendPackets(...)
- XpSendQueueInsert(...)
- XpSendSubmitToBridge(...)
- XpSendCompleteFromBridge(...)
- XpSendCancelAll(...)

xpim/xpim_recv.c
----------------
Purpose:
- receive indication to XP networking

Must implement:
- XpRecvIndicateFromBridge(...)
- XpRecvBuildPacket(...)
- XpRecvTransferData(...)
- XpRecvReturnPacket(...)
- XpRecvFlush(...)

xpim/xpim_packet.c
------------------
Purpose:
- XP packet helpers

Must implement:
- XpPacketAlloc(...)
- XpPacketFree(...)
- XpPacketClone(...)
- XpPacketMapBuffer(...)
- XpPacketUnmapBuffer(...)

xpim/xpim_control.c
-------------------
Purpose:
- control path between xpim and n6host

Must implement:
- XpCtrlRegisterBridge(...)
- XpCtrlUnregisterBridge(...)
- XpCtrlNotifyLinkState(...)
- XpCtrlIssueOid(...)
- XpCtrlCompleteOid(...)

xpim/xpim_util.c
----------------
Purpose:
- helpers/stats/mac/link

Must implement:
- XpUtilCopyMac(...)
- XpUtilLinkUp(...)
- XpUtilLinkDown(...)
- XpUtilUpdateStats(...)

xpim/sources
xpim/makefile
xpim/xpim.inf
-------------
Purpose:
- WDK 7600 build
- install as XP IM / virtual miniport component

======================================================================
4) GLUE LAYER – THE ACTUAL TRANSLATION LOGIC
======================================================================

glue/glue_oid_map.c
-------------------
Purpose:
- the key policy file
- exact OID translations and capability clamping

Must implement:
- GlueOidInitMap(...)
- GlueOidN6ToXp(...)
- GlueOidXpToN6(...)
- GlueOidIsAllowed(...)
- GlueOidIsStubbed(...)
- GlueOidDefaultReply(...)

Must define initial supported mappings for v1:
- MAC address
- current packet filter
- multicast list
- maximum frame size
- maximum total size
- link speed
- media connect status
- vendor description
- vendor ID
- driver version
- statistics subset

glue/glue_send_path.c
---------------------
Purpose:
- core send bridging

Must implement:
- GlueSendFromXpToN6(...)
- GlueSendFromN6ToXp(...)
- GlueSendCompleteToXp(...)
- GlueSendCompleteToN6(...)
- GlueSendAbort(...)

glue/glue_recv_path.c
---------------------
Purpose:
- core receive bridging

Must implement:
- GlueRecvFromN6ToXp(...)
- GlueRecvFromXpToN6(...)
- GlueRecvReturnToN6(...)
- GlueRecvReturnToXp(...)
- GlueRecvDrop(...)

glue/glue_link_state.c
----------------------
Purpose:
- link and media-state normalization

Must implement:
- GlueLinkSetState(...)
- GlueLinkIndicateToXp(...)
- GlueLinkIndicateToN6(...)

glue/glue_caps.c
----------------
Purpose:
- feature negotiation clamp

Must implement:
- GlueCapsInit(...)
- GlueCapsBuildN6View(...)
- GlueCapsBuildXpView(...)
- GlueCapsDisableUnsupported(...)

Must explicitly disable in v1:
- RSS
- LSO
- checksum offload if unstable
- VLAN offload if unstable
- VMQ
- SR-IOV
- selective suspend
- advanced power features

glue/glue_reset.c
-----------------
Purpose:
- unified reset/restart/teardown policy

Must implement:
- GlueResetBegin(...)
- GlueResetComplete(...)
- GluePausePath(...)
- GlueRestartPath(...)
- GlueStopPath(...)

glue/glue_trace.c
-----------------
Purpose:
- shared trace events

Must implement:
- GlueTraceAdapter(...)
- GlueTraceOid(...)
- GlueTraceSend(...)
- GlueTraceRecv(...)
- GlueTraceReset(...)

======================================================================
5) TEST / DEBUG FILES
======================================================================

test/kd_bp.txt
--------------
Must contain first bring-up breakpoints for:
- n6host!DriverEntry
- n6host!N6MiniportInitializeEx
- n6host!N6OidRequestDispatch
- n6host!N6SendNetBufferLists
- n6host!N6IndicateReceiveToMiniport
- xpim!DriverEntry
- xpim!XpMiniportInitialize
- xpim!XpOidQueryInformation
- xpim!XpSendPackets
- xpim!XpRecvIndicateFromBridge

test/oid_matrix.txt
-------------------
Must document:
- each OID
- XP side name
- NDIS6 side name
- implemented / stub / fail
- buffer rules
- expected completion mode

test/send_recv_checklist.txt
----------------------------
Must document:
- first send packet
- first receive packet
- completion arrives
- no double completion
- no leak on halt
- no leak on reset

test/startup_checklist.txt
--------------------------
Must document:
- driver load order
- service start type
- registry keys
- expected first breakpoints
- recovery steps if boot fails

======================================================================
6) ABSOLUTE MINIMAL FILE SET FOR M1
======================================================================

If you want the FIRST buildable milestone only, build these files first:

common/bridge_types.h
common/bridge_status.h
common/bridge_debug.h
common/bridge_adapter.h
common/bridge_oid.h
common/bridge_nbl.h
common/bridge_exports.h

n6host/n6host_main.c
n6host/n6host_exports.c
n6host/n6host_miniport.c
n6host/n6host_oid.c
n6host/n6host_send.c
n6host/n6host_recv.c
n6host/n6host_nbl.c
n6host/n6host_util.c
n6host/sources
n6host/makefile
n6host/n6host.inf

xpim/xpim_main.c
xpim/xpim_protocol.c
xpim/xpim_miniport.c
xpim/xpim_oid.c
xpim/xpim_send.c
xpim/xpim_recv.c
xpim/xpim_control.c
xpim/xpim_util.c
xpim/sources
xpim/makefile
xpim/xpim.inf

glue/glue_oid_map.c
glue/glue_send_path.c
glue/glue_recv_path.c
glue/glue_link_state.c
glue/glue_caps.c

======================================================================
7) FIRST IMPLEMENTATION ORDER
======================================================================

Step 1:
- common/*
- n6host_main.c
- xpim_main.c

Step 2:
- n6host_exports.c
- only the exact imported NDIS helpers needed by one chosen miniport

Step 3:
- n6host_miniport.c
- xpim_miniport.c
- xpim_protocol.c

Step 4:
- glue_oid_map.c
- n6host_oid.c
- xpim_oid.c

Step 5:
- bridge_nbl.h
- n6host_nbl.c
- glue_send_path.c
- glue_recv_path.c
- n6host_send.c
- n6host_recv.c
- xpim_send.c
- xpim_recv.c

Step 6:
- link state / reset / trace / caps clamp

======================================================================
8) WHAT TO CODE FIRST IN n6host_exports.c
======================================================================

The first exported/support functions to implement should be exactly these:
- NdisMRegisterMiniportDriver
- NdisMDeregisterMiniportDriver
- NdisMSetMiniportAttributes
- NdisAllocateMemoryWithTagPriority
- NdisFreeMemory
- NdisAllocateSpinLock
- NdisAcquireSpinLock
- NdisReleaseSpinLock
- NdisInitializeEvent
- NdisSetEvent
- NdisWaitEvent
- NdisAllocateNetBufferListPool
- NdisFreeNetBufferListPool
- NdisAllocateNetBufferAndNetBufferList
- NdisFreeNetBufferList
- NdisGetDataBuffer
- NdisOidRequestComplete
- NdisMSendNetBufferListsComplete
- NdisMIndicateReceiveNetBufferLists
- NdisMReturnNetBufferLists
- NdisAllocateTimerObject
- NdisSetTimerObject
- NdisCancelTimerObject
- NdisFreeTimerObject

That set gives the best chance to reach:
- DriverEntry
- miniport registration
- initialize
- OID traffic
- first send/receive skeleton

======================================================================
9) FIRST SUCCESS CRITERIA
======================================================================

M1 is reached only if:
- both sys files load on XP
- chosen NDIS6 miniport reaches InitializeEx
- core OIDs complete without crash
- one send completes
- one receive is indicated and returned
- repeated halt/restart does not leak or bugcheck

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...