NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS 结构 (ndis.h)

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS结构为将此结构传递给 的驱动程序指定 CoNDIS 调用管理器 ProtocolXxx 函数 NdisSetOptionalHandlers 函数。

语法

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;

成员

Header

调用管理器 CoNDIS 特征结构的 NDIS_OBJECT_HEADER 结构 (NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS) 。 将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS,将 Revision 成员设置为 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS_REVISION_1,将 Size 成员设置为 NDIS_SIZEOF_CO_CALL_MANAGER_OPTIONAL_HANDLERS_REVISION_1。

Reserved

保留给 NDIS。

CmCreateVcHandler

调用方 ProtocolCoCreateVc 函数的入口点。

CmDeleteVcHandler

调用方 ProtocolCoDeleteVc 函数的入口点。

CmOpenAfHandler

调用方 ProtocolCmOpenAf 函数的入口点。

CmCloseAfHandler

调用方 ProtocolCmCloseAf 函数的入口点。

CmRegisterSapHandler

调用方 的入口点 ProtocolCmRegisterSap 函数。

CmDeregisterSapHandler

调用方 的入口点 ProtocolCmDeregisterSap 函数。

CmMakeCallHandler

调用方 ProtocolCmMakeCall 函数的入口点。

CmCloseCallHandler

调用方 的入口点 ProtocolCmCloseCall 函数。

CmIncomingCallCompleteHandler

调用方 的入口点 ProtocolCmIncomingCallComplete 函数。

CmAddPartyHandler

调用方 ProtocolCmAddParty 函数的入口点。

CmDropPartyHandler

调用方 的入口点 ProtocolCmDropParty 函数。

CmActivateVcCompleteHandler

调用方 的入口点 ProtocolCmActivateVcComplete 函数。

CmDeactivateVcCompleteHandler

调用方 的入口点 ProtocolCmDeactivateVcComplete 函数。

CmModifyCallQoSHandler

调用方 的入口点 ProtocolCmModifyCallQoS 函数。

CmOidRequestHandler

调用方 的入口点 ProtocolCoOidRequest 函数。

CmOidRequestCompleteHandler

调用方 的入口点 ProtocolCoOidRequestComplete 函数。

CmNotifyCloseAfCompleteHandler

调用方 的入口点 ProtocolCmNotifyCloseAfComplete 函数。

注解

若要将入口点指定为 CoNDIS 调用管理器,协议驱动程序或微型端口调用管理器 (MCM) 初始化NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS结构并将其传递给 NdisSetOptionalHandlers 函数。

独立调用管理器约束

独立调用管理器从 ProtocolSetOptions 函数调用 NdisSetOptionalHandlers。 调用管理器在调用 NdisSetOptionalHandlers 时,必须将 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS 结构中的每个入口点都设置为驱动程序提供的 ProtocolXxx 函数,即使呼叫管理器不支持传入呼叫、传出呼叫或点到多点连接也是如此。 对于此类调用管理器不支持的任何面向连接的功能子集,其占位符 ProtocolXxx 函数应仅返回NDIS_STATUS_NOT_SUPPORTED。

在独立调用管理器调用 之后 NdisCmRegisterAddressFamilyEx 函数成功,NDIS 忽略调用管理器以前为 指定的任何入口点 的 ProtocolOidRequestComplete 函数 NDIS_PROTOCOL_DRIVER_CHARACTERISTICS 它传递给 的结构 NdisRegisterProtocolDriver 函数。

MCM 约束

MCM 从 MiniportSetOptions 函数调用 NdisSetOptionalHandlers 函数。 即使 MCM 不支持传入呼叫、传出呼叫或点到多点连接,MCM 也必须将 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS 结构中的每个 Cm Xxx 成员都设置为 MCM 提供的 ProtocolXxx 函数。 对于此类 MCM 驱动程序不支持的面向连接的功能的子集,其 ProtocolXxx 函数应仅返回NDIS_STATUS_NOT_SUPPORTED。 例如,NDIS 从不调用已注册的 MCM 驱动程序 ProtocolCmActivateVcComplete ProtocolCmDeactivateVcComplete 函数,因此这些函数可以返回NDIS_STATUS_NOT_SUPPORTED但必须在NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS结构中具有入口点。

MCM 驱动程序必须为 ProtocolCoCreateVcProtocolCoDeleteVc 函数指定入口点。 如果 MCM 以前注册了 MiniportCoCreateVcMiniportCoDeleteVc 函数。 每当 NDIS 调用 MCM 驱动程序以 (VC) 创建或删除虚拟连接时,NDIS 将忽略这些函数的入口点。 因此,NDIS 会将初始参数的 NdisAfHandle 值传递给 MCM 提供的 ProtocolCoCreateVcProtocolCoDeleteVc 函数,而不是传递给非 MCM 微型端口驱动程序的 MiniportCoCreateVcMiniportCoDeleteVc 函数的 MiniportAdapterContext 值。

MCM 驱动程序无法将 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS 的 CmOidRequestHandler 成员设置为其 MiniportCoOidRequest 函数。 驱动程序必须为 ProtocolCoOidRequest 函数提供单独的入口点。 MCM 驱动程序必须具有 ProtocolCoOidRequest 函数来处理来自 CoNDIS 客户端的调用管理器请求,并且必须具有 ProtocolCoOidRequestComplete 函数。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

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