NdisCmRegisterAddressFamilyEx function (ndis.h)

The NdisCmRegisterAddressFamilyEx function registers an address family (AF) for communication between CoNDIS drivers.

Syntax

NDIS_STATUS NdisCmRegisterAddressFamilyEx(
  [in] NDIS_HANDLE        NdisBindingHandle,
  [in] PCO_ADDRESS_FAMILY AddressFamily
);

Parameters

[in] NdisBindingHandle

A handle that NDIS provided at the NdisBindingHandle parameter of the NdisOpenAdapterEx function. This handle identifies the binding to associate with the AF.

[in] AddressFamily

A pointer to a CO_ADDRESS_FAMILY structure that identifies the call manager and the AF that it supports for the binding that NdisBindingHandle specifies.

The pointer for AddressFamily becomes an input parameter to the ProtocolCoAfRegisterNotify functions of all of the clients that are bound to the same CoNDIS miniport adapter.

Return value

NdisCmRegisterAddressFamilyEx can return any of the following:

Return code Description
NDIS_STATUS_SUCCESS
The protocol driver registered the AF that the AddressFamily points to, so NDIS will call the ProtocolCoAfRegisterNotify functions of all of the clients that bind themselves to the same miniport adapter.
NDIS_STATUS_RESOURCES
The requested operation failed because NDIS could not allocate sufficient memory or initialize the state that it uses to track the call manager or the specified AF.
NDIS_STATUS_FAILURE
NDIS failed the call to NdisCmRegisterAddressFamilyEx, possibly for one of the following reasons:
  • The caller was not registered as a connection-oriented protocol driver.
  • The miniport driver that the caller is bound to was not registered as a connection-oriented miniport driver.
  • Another call manager has already registered the specified AF.
  • The caller's binding is being closed.

Remarks

NDIS stand-alone call managers, which register as NDIS protocol drivers by calling the NdisRegisterProtocolDriver function, should call the NdisCmRegisterAddressFamilyEx function to register an AF. Miniport call managers (MCMs) must instead call the NdisMCmRegisterAddressFamilyEx function.

To register an AF for a binding, the stand-alone call manager should call NdisCmRegisterAddressFamilyEx from the ProtocolBindAdapterEx function.

A stand-alone call manager's ProtocolBindAdapterEx function first establishes the binding to the underlying miniport driver by calling the NdisOpenAdapterEx function. Each time NDIS calls ProtocolBindAdapterEx with another handle at the BindContext parameter, ProtocolBindAdapterEx establishes a binding and registers an AF that it supports. In other words, a stand-alone call manager eventually registers an AF for each binding on which it provides call-management services to connection-oriented clients.

The call manager can support more than one AF and can support more than one AF for a single binding. However, only one call manager can support a given AF for clients that are bound to a given miniport adapter.

When a call manager's ProtocolBindAdapterEx function returns control after a successful binding operation, NDIS calls the ProtocolCoAfRegisterNotify functions of all of the clients that are bound to the same miniport adapter.

Requirements

Requirement Value
Minimum supported client Supported in NDIS 6.0 and later.
Target Platform Desktop
Header ndis.h (include Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI compliance rules Irql_CallManager_Function(ndis)

See also

CO_ADDRESS_FAMILY

NdisMCmRegisterAddressFamilyEx

NdisOpenAdapterEx

NdisRegisterProtocolDriver

ProtocolBindAdapterEx

ProtocolCoAfRegisterNotify