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.