Registering the ProtocolXxx Functions of a Connectionless Protocol Driver (NDIS 5.1)

Note   NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.

To register NDIS driver lower-edge functions( ProtocolXxx functions) with NDIS, a connectionless protocol driver calls NdisRegisterProtocol. The NDIS_PROTOCOL_CHARACTERISTICS structure that the driver passes to NdisRegisterProtocolspecifies the entry points of the ProtocolXxx functions.

The following is a list of NDIS_PROTOCOL_CHARACTERISTICS structure members. These members specify the entry points for optional and required ProtocolXxx functions that a connectionless protocol driver can export:

  • BindAdapterHandler
    This is a required function. NDIS calls ProtocolBindAdapter to request that the protocol driver bind to an underlying miniport driver or virtual miniport. See Dynamic Binding in a Protocol Driver For more information about dynamic binding.

  • UnbindAdapterHandler
    This is a required function. NDIS calls ProtocolUnbindAdapter to close a binding to the underlying miniport driver or virtual miniport. ProtocolUnbindAdapter calls NdisCloseAdapter and deallocates resources when the binding is successfully closed.

  • OpenAdapterCompleteHandler
    This is a required function. If a protocol driver's call to NdisOpenAdapter returns NDIS_STATUS_PENDING, NDIS calls ProtocolOpenAdapterComplete subsequently to complete the binding operation.

  • CloseAdapterCompleteHandler
    This is a required function. If a protocol driver's call to NdisCloseAdapter returns NDIS_STATUS_PENDING, NDIS calls ProtocolCloseAdapterComplete subsequently to complete the unbinding operation.

  • ReceiveHandler
    This is a required function. NDIS calls ProtocolReceive with a pointer to a lookahead buffer. If this buffer contains less than the full network packet, ProtocolReceive calls NdisTransferData to obtain the remainder of the received packet. ProtocolReceive calls NdisTransferData with a protocol-allocated packet descriptor that specifies the protocol-allocated buffers for the packet.

  • ReceiveCompleteHandler
    This is a required function. NDIS calls ProtocolReceiveComplete to indicate that any received packets previously indicated to ProtocolReceive can now be postprocessed.

  • TransferDataCompleteHandler
    This is a required function. NDIS calls ProtocolTransferDataComplete after a previous call to NdisTransferData returned NDIS_STATUS_PENDING and after NDIS has copied the remaining data into the protocol-supplied buffers that are chained to the protocol-supplied packet descriptor.

  • ReceivePacketHandler
    This is an optional function. Protocol drivers should provide ProtocolReceivePacket to obtain better performance from miniport drivers that call NdisMIndicateReceivePacket to indicate receive packets.

  • SendCompleteHandler
    This is a required function. NDIS calls ProtocolSendComplete for each packet that the protocol driver transmitted where NdisSend returned NDIS_STATUS_PENDING. If the protocol driver sends an array of packets, ProtocolSendComplete is called once for each packet that the protocol passed to NdisSendPackets.

  • ResetCompleteHandler
    This is a required function. If a protocol driver calls NdisReset and the call returns NDIS_STATUS_PENDING, NDIS calls ProtocolResetComplete after the reset operation is completed.

  • RequestCompleteHandler
    This is a required function. If a protocol driver calls NdisRequest and the call returns NDIS_STATUS_PENDING, NDIS calls ProtocolRequestComplete after the request operation is completed.

  • StatusHandler
    This is a required function. NDIS calls ProtocolStatus to handle status changes that are indicated by underlying NDIS drivers.

  • StatusCompleteHandler
    This is a required function. NDIS calls ProtocolStatusComplete, along with ProtocolStatus, to report the start and end of a reset operation that NDIS or a miniport driver initiated.

  • PnPEventHandler
    This is a required function. NDIS calls ProtocolPnPEvent to indicate a Plug and Play (PnP) event or a Power Management (PM) event. See Handling PnP Events and PM Events in a Protocol Driver for more information.

  • UnloadHandler
    This is an optional function. NDIS calls ProtocolUnload in response to a user request to uninstall a protocol driver. NDIS calls ProtocolUnload after calling ProtocolUnbindAdapter once for each bound adapter.

 

 

Send comments about this topic to Microsoft