Поделиться через


Инициализация CoNDIS TAPI

В этом разделе описывается, как драйвер мини-порта CoNDIS WAN перечисляет свои возможности TAPI для приложений. Эти возможности TAPI состоят из следующих функций:

  • Количество линейных устройств, поддерживаемых минипорт-драйвером, включает в себя, например, модем, факсимильную плату и ISDN-карту.

  • Информация о конкретных линиях включает, например, идентификатор линии и количество адресов каналов (телефонных номеров), которые линия поддерживает для одновременной передачи голоса и данных.

  • Сведения о конкретных адресах каналов устройств включают, например, идентификатор вызывающего абонента и количество возможных активных вызовов.

Чтобы получить сведения о базовом оборудовании, NDPROXY выдает запросы на возможности линий и каналов. То есть драйвер NDPROXY запрашивает возможности TAPI у минипорт-драйвера CoNDIS WAN. Драйвер NDPROXY вызывает функцию NdisCoOidRequest для запроса возможностей TAPI драйвера мини-порта. В этом вызове NDPROXY передает структуру NDIS_OID_REQUEST. NDPROXY указывает следующее в NDIS_OID_REQUEST:

  • значение NdisRequestQueryInformation в элементе RequestType

  • Идентификатор объекта (OID), указывающий возможность TAPI получить из драйвера мини-порта в элементе Oid

  • Буфер для хранения сведений о возможностях TAPI, возвращаемых в элементе InformationBuffer

Все запросы, отправленные драйверу мини-порта CoNDIS WAN драйвером NDPROXY, можно выполнить синхронно или асинхронно. Если драйвер мини-порта WAN CoNDIS определяет, что он не может немедленно завершить запрос, то он может просто вернуть NDIS_STATUS_PENDING и вызвать функцию NdisMCmOidRequestComplete из функции ProtocolCoOidRequest после завершения запроса.

После того как драйвер минипорта CoNDIS WAN уведомляет NDPROXY о регистрации нового семейства адресов, как указано в CoNDIS TAPI Registration, NDPROXY запрашивает следующие OID, чтобы определить TAPI-специфические возможности драйвера минипорта CoNDIS WAN и его сетевой интерфейсной карты (NIC).

  • NDPROXY запрашивает драйвер минипорта с OID_CO_TAPI_CM_CAPS, чтобы определить число линий, поддерживаемых устройством, для которого он предоставляет службы TAPI. Этот OID также требует от мини-порт драйвера указать, обладают ли эти линии разными возможностями.

  • NDPROXY далее запрашивает мини-драйвер с OID_CO_TAPI_LINE_CAPS, чтобы определить возможности телефонии для указанной линии. Этот OID также просит минипорт-драйвер указать, имеют ли адреса на этой линии разные возможности адресации.

    • Если предыдущий запрос OID_CO_TAPI_CM_CAPS указал, что устройство драйвера мини-порта поддерживает только одну строку или если устройство поддерживает несколько строк с одинаковыми возможностями линии, NDPROXY должен запрашивать OID_CO_TAPI_LINE_CAPS только один раз, чтобы получить возможности линии устройства. В этом случае возможности канала связи, возвращаемые драйвером мини-порта, применяются ко всем линиям на устройстве.
    • Если устройство поддерживает несколько линий с различными возможностями, NDPROXY должен запрашивать OID_CO_TAPI_LINE_CAPS по одному разу для каждой линии, чтобы получить возможности каждой линии.
  • Наконец, NDPROXY обращается к драйверу минипорта с OID_CO_TAPI_ADDRESS_CAPS, чтобы определить телефонные возможности для указанного адреса на указанной линии.

    • Если предыдущий запрос OID_CO_TAPI_LINE_CAPS указал, что линия поддерживает только один адрес или что все адреса на линии имеют одинаковые адресные возможности, NDPROXY запрашивает OID_CO_TAPI_ADDRESS_CAPS только один раз, чтобы выяснить возможности всех адресов на линии.
    • Если строка поддерживает несколько адресов с различными возможностями, NDPROXY запрашивает OID_CO_TAPI_ADDRESS_CAPS один раз для каждого адреса в строке.

Драйвер NDPROXY использует сведения, полученные с помощью идентификаторов объектов TAPI, для выполнения следующих действий:

  • Создайте параметры TAPI для последующих вызовов TAPI.

  • Определите, следует ли принимать или отклонять последующие входящие вызовы TAPI.

  • Зарегистрируйте одну или несколько точек доступа к службам TAPI, на которых будут получать последующие входящие вызовы TAPI.