NdisMCmRegisterAddressFamilyEx function

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

MiniportAdapterHandle [in]

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

AddressFamily [in]

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 codeDescription
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

Target platform

Desktop

Version

Supported in NDIS 6.0 and later.

Header

Ndis.h (include Ndis.h)

Library

Ndis.lib

IRQL

PASSIVE_LEVEL

DDI compliance rules

Irql_MCM_Function

See also

CO_ADDRESS_FAMILY
MiniportInitializeEx
NdisCmRegisterAddressFamilyEx
NdisMRegisterMiniportDriver
ProtocolBindAdapterEx
ProtocolCmOpenAf
ProtocolCoAfRegisterNotify
ProtocolCoCreateVc
ProtocolCoDeleteVc
ProtocolCoOidRequest
ProtocolCoOidRequestComplete

 

 

Send comments about this topic to Microsoft

Show: