NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure (ndis.h)

The NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure specifies CoNDIS call manager ProtocolXxx functions for the driver that passes this structure to the NdisSetOptionalHandlers function.

Syntax

typedef struct _NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS {
  NDIS_OBJECT_HEADER                  Header;
  ULONG                               Reserved;
  CO_CREATE_VC_HANDLER                CmCreateVcHandler;
  CO_DELETE_VC_HANDLER                CmDeleteVcHandler;
  CM_OPEN_AF_HANDLER                  CmOpenAfHandler;
  CM_CLOSE_AF_HANDLER                 CmCloseAfHandler;
  CM_REG_SAP_HANDLER                  CmRegisterSapHandler;
  CM_DEREG_SAP_HANDLER                CmDeregisterSapHandler;
  CM_MAKE_CALL_HANDLER                CmMakeCallHandler;
  CM_CLOSE_CALL_HANDLER               CmCloseCallHandler;
  CM_INCOMING_CALL_COMPLETE_HANDLER   CmIncomingCallCompleteHandler;
  CM_ADD_PARTY_HANDLER                CmAddPartyHandler;
  CM_DROP_PARTY_HANDLER               CmDropPartyHandler;
  CM_ACTIVATE_VC_COMPLETE_HANDLER     CmActivateVcCompleteHandler;
  CM_DEACTIVATE_VC_COMPLETE_HANDLER   CmDeactivateVcCompleteHandler;
  CM_MODIFY_CALL_QOS_HANDLER          CmModifyCallQoSHandler;
  CO_OID_REQUEST_HANDLER              CmOidRequestHandler;
  CO_OID_REQUEST_COMPLETE_HANDLER     CmOidRequestCompleteHandler;
  CM_NOTIFY_CLOSE_AF_COMPLETE_HANDLER CmNotifyCloseAfCompleteHandler;
} NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS, *PNDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS;

Members

Header

The NDIS_OBJECT_HEADER structure for the call manager CoNDIS characteristics structure (NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS). Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS, the Revision member to NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS_REVISION_1, and the Size member to NDIS_SIZEOF_CO_CALL_MANAGER_OPTIONAL_HANDLERS_REVISION_1.

Reserved

Reserved for NDIS.

CmCreateVcHandler

The entry point of the caller's ProtocolCoCreateVc function.

CmDeleteVcHandler

The entry point of the caller's ProtocolCoDeleteVc function.

CmOpenAfHandler

The entry point of the caller's ProtocolCmOpenAf function.

CmCloseAfHandler

The entry point of the caller's ProtocolCmCloseAf function.

CmRegisterSapHandler

The entry point of the caller's ProtocolCmRegisterSap function.

CmDeregisterSapHandler

The entry point of the caller's ProtocolCmDeregisterSap function.

CmMakeCallHandler

The entry point of the caller's ProtocolCmMakeCall function.

CmCloseCallHandler

The entry point of the caller's ProtocolCmCloseCall function.

CmIncomingCallCompleteHandler

The entry point of the caller's ProtocolCmIncomingCallComplete function.

CmAddPartyHandler

The entry point of the caller's ProtocolCmAddParty function.

CmDropPartyHandler

The entry point of the caller's ProtocolCmDropParty function.

CmActivateVcCompleteHandler

The entry point of the caller's ProtocolCmActivateVcComplete function.

CmDeactivateVcCompleteHandler

The entry point of the caller's ProtocolCmDeactivateVcComplete function.

CmModifyCallQoSHandler

The entry point of the caller's ProtocolCmModifyCallQoS function.

CmOidRequestHandler

The entry point of the caller's ProtocolCoOidRequest function.

CmOidRequestCompleteHandler

The entry point of the caller's ProtocolCoOidRequestComplete function.

CmNotifyCloseAfCompleteHandler

The entry point of the caller's ProtocolCmNotifyCloseAfComplete function.

Remarks

To specify entry points as a CoNDIS call manager, a protocol driver or miniport call manager (MCM) initializes an NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure and passes it to the NdisSetOptionalHandlers function.

Stand-alone Call Manager Constraints

A stand-alone call manager calls NdisSetOptionalHandlers from the ProtocolSetOptions function. The call manager must set every entry point in the NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure to a driver-supplied ProtocolXxx function when it calls NdisSetOptionalHandlers, even if the call manager does not support incoming calls, outgoing calls, or point-to-multipoint connections. For whatever subset of connection-oriented functionality that such a call manager does not support, its placeholder ProtocolXxx functions should simply return NDIS_STATUS_NOT_SUPPORTED.

After a stand-alone call manager calls the NdisCmRegisterAddressFamilyEx function successfully, NDIS ignores any entry point that the call manager previously specified for the ProtocolOidRequestComplete function of the NDIS_PROTOCOL_DRIVER_CHARACTERISTICS structure that it passed to the NdisRegisterProtocolDriver function.

MCM Constraints

An MCM calls the NdisSetOptionalHandlers function from the MiniportSetOptions function. The MCM must set every CmXxx member in the NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure to a MCM-supplied ProtocolXxx function even if the MCM does not support incoming calls, outgoing calls, or point-to-multipoint connections. For whatever subset of connection-oriented functionality that such an MCM driver does not support, its ProtocolXxx functions should simply return NDIS_STATUS_NOT_SUPPORTED. For example, NDIS never calls an MCM driver's registered ProtocolCmActivateVcComplete or ProtocolCmDeactivateVcComplete function, so these functions can return NDIS_STATUS_NOT_SUPPORTED but must have entry points in the NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure.

An MCM driver must specify entry points for the ProtocolCoCreateVc and ProtocolCoDeleteVc functions. If the MCM previously registered a MiniportCoCreateVc or MiniportCoDeleteVc function. NDIS ignores the entry points for these functions, whenever NDIS calls the MCM driver to create or delete a virtual connection (VC). Therefore, NDIS passes in an NdisAfHandle value for the initial parameter to the MCM-supplied ProtocolCoCreateVc or ProtocolCoDeleteVc function, rather than the MiniportAdapterContext value that it would pass to the MiniportCoCreateVc or MiniportCoDeleteVc function of a non-MCM miniport driver.

An MCM driver cannot set the CmOidRequestHandler member of NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS to its MiniportCoOidRequest function. The driver must provide a separate entry point for a ProtocolCoOidRequest function. An MCM driver must have a ProtocolCoOidRequest function to handle call manager requests from CoNDIS clients and must have a ProtocolCoOidRequestComplete function.

Requirements

Requirement Value
Minimum supported client Supported in NDIS 6.0 and later.
Header ndis.h (include Ndis.h)

See also

MiniportCoCreateVc

MiniportCoDeleteVc

MiniportCoOidRequest

MiniportSetOptions

NDIS_OBJECT_HEADER

NDIS_PROTOCOL_DRIVER_CHARACTERISTICS NdisCmRegisterAddressFamilyEx

NdisRegisterProtocolDriver

NdisSetOptionalHandlers

ProtocolCmActivateVcComplete

ProtocolCmAddParty

ProtocolCmCloseAf

ProtocolCmCloseCall

ProtocolCmDeactivateVcComplete

ProtocolCmDeregisterSap

ProtocolCmDropParty

ProtocolCmIncomingCallComplete

ProtocolCmMakeCall

ProtocolCmModifyCallQoS

ProtocolCmOpenAf

ProtocolCmRegisterSap

ProtocolOidRequestComplete

ProtocolSetOptions