次の方法で共有


Registering and Opening an Address Family (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 call manager must register an address family for each NIC on which it provides call manager services to connection-oriented clients. Similarly, an MCM driver must register an address family for the NIC that it manages.

By registering an address family, a call manager or MCM driver registers its call manager entry points with NDIS and causes NDIS to advertise the call manager's or MCM driver's services to all connection-oriented clients that bind to the adapter.

If a connection-oriented client can use the services advertised by a call manager or MCM driver, it can open an address family with the call manager or MCM driver.

Registering an Address Family from a Call Manager (NDIS 5.1)

After its ProtocolBindAdapterfunction binds to an underlying miniport driver with NdisOpenAdapter, a call manager calls NdisCmRegisterAddressFamilyto register an address family for the binding (see the following figure).

The call to NdisCmRegisterAddressFamilyregisters the call manager entry points for the call manager and also advertises the call manager's specific signaling services. A call manager must register an address family each time that its ProtocolBindAdapterfunction and is called and successfully binds to a NIC with NdisOpenAdapter.

The call manager can support more than one address family across all the NIC drivers to which it is bound. The call manager can also support more than one address family on a single NIC to which it is bound. In this case, however, the call manager must register the same entry points for each address family on the binding. Only one call manager can support a particular type of address family for clients bound to any particular NIC driver.

Registering an Address Family from an MCM Driver (NDIS 5.1)

An MCM driver calls NdisMCmRegisterAddressFamilyfrom its MiniportInitializefunction after registering its miniport driver entry points with NdisMRegisterMiniport. An MCM driver calls NdisMCmRegisterAddressFamilyonce to register its call manager entry points with NDIS and to advertise its services to connection-oriented clients (see the following figure).

A miniport driver of a NIC that has on-board connection-oriented signaling support can register itself as an MCM driver even though a call manager may be available. By doing so, such an MCM driver preempts the call manager as the call manager for that NIC.

Opening an Address Family (NDIS 5.1)

A call manager's or MCM driver's call to Ndis(M)CmRegisterAddressFamily causes NDIS to call the ProtocolCoAfRegisterNotify function of each connection-oriented client on the binding (as shown in two previous figures).

ProtocolCoAfRegisterNotify examines the address-family data to determine whether the client can use the services of this particular CM or MCM driver. Whether the client can make modifications in the (M)CM-supplied address-family data depends on the particular signaling-protocol support of the call manager or MCM driver.

If the client finds the offered call-management services acceptable, ProtocolCoAfRegisterNotify allocates a per-AF context area for the client and calls NdisClOpenAddressFamily. NdisClOpenAddressFamilyregisters the client's connection-oriented entry points with NDIS.

The call to NdisClOpenAddressFamilycauses NDIS to call the call manager's or MCM driver's ProtocolCmOpenAf function (as shown already in two previous figures). ProtocolCmOpenAf ensures that the client passed in a valid address family and allocates and initializes the resources necessary to perform operations on behalf of the client that is opening this instance of the address family. ProtocolCmOpenAf also stores an NDIS-supplied NdisAfHandlethat represents the association between the call manager and client for the open address family.

ProtocolCmOpenAf can complete synchronously or asynchronously. To complete asynchronously. The ProtocolCmOpenAf function of a call manager calls NdisCmOpenAddressFamilyComplete; the ProtocolCmOpenAf function of an MCM driver calls NdisMCmOpenAddressFamilyComplete. The call to Ndis(M)CmOpenAddressFamilyComplete causes NDIS to call the ProtocolOpenAfComplete function of the client that originally called NdisClOpenAddressFamily.

If the client's call to NdisClOpenAddressFamilyis successful, NDIS returns to the client an NdisAfHandlethat represents the association between the call manager and client for the open address family.

If a client accepts incoming calls, it usually registers one or more SAPs from its ProtocolClOpenAfCompletefunction by calling NdisClRegisterSapfollowing its successful call to NdisClOpenAddressFamily(see Registering a SAP).

If a client makes outgoing calls, it could create one or more VCs (see Creating a VC) in its ProtocolClOpenAfCompletefunction in anticipation of a request by one or more its clients to make an outgoing call.

 

 

Send comments about this topic to Microsoft