NdisMCmRegisterAddressFamilyEx function (ndis.h)

The NdisMCmRegisterAddressFamilyEx function registers an address family (AF) for communication between a miniport call manager (MCM) and CoNDIS clients.

Syntax

NDIS_STATUS NdisMCmRegisterAddressFamilyEx(
  [in] NDIS_HANDLE        MiniportAdapterHandle,
  [in] PCO_ADDRESS_FAMILY AddressFamily
);

Parameters

[in] MiniportAdapterHandle

An NDIS-supplied handle that identifies a miniport adapter. This handle is an input parameter to the MCM's MiniportInitializeEx function.

[in] AddressFamily

A pointer to a CO_ADDRESS_FAMILY structure that identifies the AF that the MCM driver supports.

The pointer becomes an input parameter to the ProtocolCoAfRegisterNotify functions of all of the CoNDIS clients that are bound to this MCM driver.

Return value

NdisMCmRegisterAddressFamilyEx can return any of the following:

Return code Description
NDIS_STATUS_SUCCESS
The miniport driver registered with NDIS as a call manager for the AF that the AddressFamily parameter specified, so NDIS will call the ProtocolCoAfRegisterNotify functions of all of the clients that bind to the MCM driver.
NDIS_STATUS_RESOURCES
The requested operation failed because NDIS could not allocate sufficient memory or initialize the state information that it uses to track the MCM driver as a call manager of the specified AF.
NDIS_STATUS_FAILURE
NDIS failed the call to NdisMCmRegisterAddressFamilyEx, possibly for one of the following reasons:
  • The caller was not registered as a connection-oriented miniport driver.
  • The caller tried to register a duplicate AF for a given miniport adapter.

Remarks

NDIS MCMs, which register as NDIS miniport drivers by calling the NdisMRegisterMiniportDriver function, should call the NdisMCmRegisterAddressFamilyEx function to register an AF. Stand-alone call managers should instead call the NdisCmRegisterAddressFamilyEx function.

To register an AF for a miniport adapter, the MCM should call NdisMCmRegisterAddressFamilyEx from the MiniportInitializeEx function.

The driver of any network interface card (NIC) that has on-board connection-oriented signaling support can register itself as an MCM driver for better performance in managing calls. If a driver registers as an MCM driver, any stand-alone call manager with the NIC driver's own call-management support is displaced.

An MCM driver calls NdisMCmRegisterAddressFamilyEx after it has determined that a NIC is fully operational and the driver can complete network I/O operations. That is, such an MCM registers itself as a call manager and advertises its specific signaling services for CoNDIS clients.

After MiniportInitializeEx returns control with a successful registration as a call manager, NDIS calls the ProtocolBindAdapterEx functions of potential clients and, then, the ProtocolCoAfRegisterNotify functions of all of the clients that bind themselves to the associated MCM miniport adapter. These clients then cause NDIS to call the ProtocolCmOpenAf function of the MCM.

An MCM can support more than one AF for a single NIC that it manages. The MCM driver must call NdisMCmRegisterAddressFamilyEx once for each AF that it registers for a miniport adapter. Only one MCM driver can support a particular type of AF for clients that are bound to a given 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_MCM_Function(ndis)

See also

CO_ADDRESS_FAMILY

MiniportInitializeEx

NdisCmRegisterAddressFamilyEx

NdisMRegisterMiniportDriver

ProtocolBindAdapterEx

ProtocolCmOpenAf

ProtocolCoAfRegisterNotify

ProtocolCoCreateVc

ProtocolCoDeleteVc

ProtocolCoOidRequest

ProtocolCoOidRequestComplete