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