Registering as a Connection-Oriented Client (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 client driver must register a set of ProtocolXxx functions to communicate with underlying connection-oriented drivers. A call manager or a miniport call manager (MCM) calls NdisCmRegisterAddressFamily or NdisMCmRegisterAddressFamily to register an address family (AF). After such a call, NDIS calls the ProtocolCoAfRegisterNotify function of all protocol drivers on the binding. For more information about registering an address family, see Registering and Opening an Address Family.

If ProtocolCoAfRegisterNotifydetermines that the client driver can use the services of the call manager or MCM that registered the AF , it allocates a per-AF context area for the client and calls NdisClOpenAddressFamily. With the call to NdisClOpenAddressFamily, a protocol driver registers a set of client-supplied functions.

Before calling NdisClOpenAddressFamily, the protocol driver must:

  1. Zero a structure of type NDIS_CLIENT_CHARACTERISTICS to pass to the ClCharacteristics parameter of NdisClOpenAddressFamily.

  2. Set the appropriate version information in the structure.

  3. Store the addresses of the ProtocolXxx client functions.

The handle that NdisClOpenAddressFamilyreturns at NdisAfHandleis opaque to a protocol driver. The protocol driver must retain this handle and provide it as an input parameter in future calls to NDIS -- for instance, to register a SAP with NdisClRegisterSap.

The following table lists the entry points and their respective client functions that a protocol driver must register with NdisClOpenAddressFamily.

Entry point ProtocolXxx function

ClCreateVcHandler

ProtocolCoCreateVc

ClDeleteVcHandler

ProtocolCoDeleteVc

ClRequestHandler

ProtocolCoRequest

ClRequestCompleteHandler

ProtocolCoRequestComplete

ClOpenAfCompleteHandler

ProtocolClOpenAfComplete

ClCloseAfCompleteHandler

ProtocolClCloseAfComplete

ClRegisterSapCompleteHandler

ProtocolClRegisterSapComplete

ClDeregisterSapCompleteHandler

ProtocolClDeregisterSapComplete

ClMakeCallCompleteHandler

ProtocolClMakeCallComplete

ClModifyCallQoSCompleteHandler

ProtocolClModifyCallQoSComplete

ClCloseCallCompleteHandler

ProtocolClCloseCallComplete

ClAddPartyCompleteHandler

ProtocolClAddPartyComplete

ClDropPartyCompleteHandler

ProtocolClDropPartyComplete

ClIncomingCallHandler

ProtocolClIncomingCall

ClIncomingCallQoSChangeHandler

ProtocolClIncomingCallQoSChange

ClIncomingCloseCallHandler

ProtocolClIncomingCloseCall

ClIncomingDropPartyHandler

ProtocolClIncomingDropParty

ClCallConnectedHandler

ProtocolClCallConnected

 

Note   The protocol driver must set every ClXxx member in the NDIS_CLIENT_CHARACTERISTICS structure to a caller-supplied ProtocolXxx function when it calls NdisClOpenAddressFamily, even if it does not support incoming calls, outgoing calls, or point-to-multipoint connections. For whatever subset of connection-oriented functionality that such a protocol driver does not support, its ProtocolXxx functions simply return NDIS_STATUS_NOT_SUPPORTED.

 

 

 

Send comments about this topic to Microsoft