5.2.1 Differences Between WAN and LAN Miniports

There are several differences in the way a WAN miniport interfaces with NDIS as compared to a LAN miniport driver described in the previous chapters. Such differences affect how a WAN driver is implemented.

·A WAN miniport must not register a MiniportTransferData handler with NdisMRegisterMiniport. Instead, a WAN miniport always passes an entire packet to the NdisMWanIndicateReceive function. When NdisMWanIndicateReceive returns, the packet has been copied and the WAN miniport can reuse the packet resources it allocated.

·WAN miniports provide a MiniportWanSend function instead of a MiniportSend function. The MiniportWanSend function accepts an additional parameter that specifies a specific data channel on which a packet is to be sent.

·WAN miniports never return NDIS_STATUS_RESOURCES as the status of MiniportSend or any other MiniportXxx function and cannot call NdisMSendResourcesAvailable.

·WAN miniports support a set of WAN-specific OIDs to set and query operating characteristics.

·WAN miniports support a set of WAN-specific status indications which are passed to NdisMIndicateStatus. These status indications report changes in the status of a link.

·WAN miniports call alternative WAN-specific NDIS functions to complete the WAN-specific NDIS calls for send and receive. The two completion calls are:

NdisMWanIndicateReceiveComplete

NdisMWanSendComplete

·WAN miniport drivers use an NDIS_WAN_PACKET instead of an NDIS_PACKET-type descriptor.

·WAN miniport drivers keep a WAN-specific set of statistics.

·WAN miniport drivers never do loopback; it is always provided by NDIS.

·WAN miniport drivers cannot be full-duplex miniports.