структура 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

Структура NDIS_OBJECT_HEADER для структуры характеристик CoNDIS диспетчера вызовов (NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS). Задайте для элемента 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.

Ограничения автономного диспетчера вызовов

Автономный диспетчер вызовов вызывает NdisSetOptionalHandlers из функции ProtocolSetOptions . При вызове NdisSetOptionalHandlers диспетчер вызовов должен задать каждую точку входа в структуре NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS функцию ProtocolXxx, предоставляемую драйвером, даже если диспетчер вызовов не поддерживает входящие вызовы, исходящие вызовы или многоточечные подключения. Для любого подмножества функциональных возможностей, ориентированных на подключение, которые такой диспетчер вызовов не поддерживает, его функции-заполнители ProtocolXxx должны просто возвращать NDIS_STATUS_NOT_SUPPORTED.

После вызова изолированного диспетчера вызовов Функция NdisCmRegisterAddressFamilyEx успешно игнорирует любую точку входа, указанную диспетчером вызовов дляФункция ProtocolOidRequestComplete объекта NDIS_PROTOCOL_DRIVER_CHARACTERISTICS структуры, переданной вФункция NdisRegisterProtocolDriver.

Ограничения MCM

MCM вызывает функцию NdisSetOptionalHandlers из функции MiniportSetOptions . MCM должен задать для каждого члена CmXxx в структуре NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS функцию ProtocolXxx, предоставляемую MCM, даже если MCM не поддерживает входящие вызовы, исходящие вызовы или подключения типа "точка — многоточечная". Для любого подмножества функций, ориентированных на подключение, которые такой драйвер MCM не поддерживает, его функции ProtocolXxx должны просто возвращать NDIS_STATUS_NOT_SUPPORTED. Например, NDIS никогда не вызывает зарегистрированный драйвер MCM. ProtocolCmActivateVcComplete или Функция ProtocolCmDeactivateVcComplete , поэтому эти функции могут возвращать NDIS_STATUS_NOT_SUPPORTED но должны иметь точки входа в NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS структуре.

Драйвер MCM должен указывать точки входа для функций ProtocolCoCreateVc и ProtocolCoDeleteVc . Если MCM ранее зарегистрировал функцию MiniportCoCreateVc или MiniportCoDeleteVc . NDIS игнорирует точки входа для этих функций всякий раз, когда NDIS вызывает драйвер MCM для создания или удаления виртуального подключения (VC). Таким образом, NDIS передает значение NdisAfHandle для начального параметра в предоставленную MCM функцию ProtocolCoCreateVc или ProtocolCoDeleteVc , а не значение MiniportAdapterContext , которое оно будет передавать в функцию MiniportCoCreateVc или MiniportCoDeleteVc драйвера минипорта, отличного от MCM.

Драйвер MCM не может задать для члена CmOidRequestHandler NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS его функцию 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