Registering the ProtocolXxx Functions of a Connection-Oriented 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.

A connection-oriented protocol driver must register some NDIS driver lower-edge functions( ProtocolXxx) that are specific to connection-oriented protocol drivers in addition to those that are common with connectionless protocol drivers.

The following protocol handlers are defined for connectionless and connection-oriented protocol drivers:

  • BindAdapterHandler

  • UnbindAdapterHandler

  • OpenAdapterCompleteHandler

  • CloseAdapterCompleteHandler

  • ReceiveCompleteHandler

  • ResetCompleteHandler

  • RequestCompleteHandler

  • StatusCompleteHandler

  • PnPEventHandler

These functions are summarized in Registering the ProtocolXxx Functions of a Connectionless Protocol Driver.

A connection-oriented protocol driver must also register the following connection-oriented protocol functions. Specifying these entry points requires a NDIS version 5.0 structure in the ProtocolCharacteristicsparameter that the protocol passes to NdisRegisterProtocol:

  • CoSendCompleteHandler
    This is a required function. NDIS calls ProtocolCoSendComplete once for each packet that the protocol driver passed to NdisCoSendPackets. The protocol driver determines the status of an NdisCoSendPackets send operation from the Status parameter that NDIS passes to ProtocolCoSendComplete.

  • CoStatusHandler
    This is a required function. NDIS calls ProtocolCoStatus with status notifications that underlying miniport drivers indicate.

  • CoReceivePacketHandler
    This is a required function. When a bound connection-oriented miniport driver or MCM calls NdisMCoIndicateReceivePacket to indicate an array of pointers, NDIS calls the protocol driver's ProtocolCoReceivePacket function.

  • CoAfRegisterNotifyHandler
    If the protocol driver is a connection-oriented client that uses the call manager services of a call manager or an MCM, it must register a ProtocolCoAfRegisterNotify function. NDIS calls the ProtocolCoAfRegisterNotify function of each protocol on a binding when a call manager or MCM driver registers an address family with NdisCmRegisterAddressFamily or NdisMCmRegisterAddressFamily. ProtocolCoAfRegisterNotify determines whether the protocol driver can use the services of a call manager or MCM that has advertised its services. Protocol drivers that are stand-alone call managers must also register a ProtocolCoAfRegisterNotify function. When called by NDIS, the ProtocolCoAfRegisterNotify function of a call manager simply returns control.

 

 

Send comments about this topic to Microsoft