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