Инициализация CoNDIS TAPI
В этом разделе описывается, как драйвер мини-порта CoNDIS WAN перечисляет свои возможности TAPI для приложений. Эти возможности TAPI включают следующее:
Число линейных устройств, поддерживаемых драйвером мини-порта, включая, например, модем, доску факса и карта ISDN.
Сведения о конкретных строках, включая, например, идентификатор строки и количество адресов каналов (телефонных номеров), поддерживаемых линией для одновременной передачи голосовых и данных.
Сведения об адресах конкретных каналов в строках устройств. Сведения об адресах включают, например, удостоверение вызывающего абонента (идентификатор вызывающего абонента) и количество активных вызовов.
Чтобы получить сведения о базовом оборудовании, NDPROXY выдает запросы на возможности адресов линий и каналов. То есть драйвер NDPROXY запрашивает возможности TAPI драйвера мини-порта CoNDIS WAN. Драйвер NDPROXY вызывает функцию NdisCoOidRequest для запроса возможностей TAPI драйвера мини-порта. В этом вызове NDPROXY передает структуру NDIS_OID_REQUEST. В NDIS_OID_REQUEST NDPROXY указывается следующее:
Значение NdisRequestQueryInformation в элементе RequestType
Идентификатор объекта (OID), указывающий возможность TAPI для извлечения из драйвера miniport в элементе Oid .
Буфер для хранения сведений о возможностях TAPI, возвращаемых в элементе InformationBuffer
Все запросы, отправленные драйверу мини-порта CoNDIS WAN драйвером NDPROXY, могут выполняться синхронно или асинхронно. Если драйвер мини-порта CoNDIS WAN определяет, что он не может выполнить запрос немедленно, он может просто вернуть NDIS_STATUS_PENDING и вызвать функцию NdisMCmOidRequestComplete из функции ProtocolCoOidRequest после завершения запроса.
После того как драйвер минипорта CoNDIS WAN уведомит NDPROXY о регистрации нового семейства адресов, как указано в регистрации CoNDIS TAPI, NDPROXY запрашивает следующие идентификаторы OID, чтобы определить возможности, характерные для TAPI драйвера мини-порта CoNDIS WAN и сетевой карты драйвера мини-порта.
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 (SAP), в которых будут приниматься последующие входящие вызовы TAPI.