Función lineInitializeExA (tapi.h)
La función lineInitializeEx inicializa el uso de TAPI de la aplicación para su uso posterior de la abstracción de líneas. Registra el mecanismo de notificación especificado de la aplicación y devuelve el número de dispositivos de línea disponibles para la aplicación. Un dispositivo de línea es cualquier dispositivo que proporciona una implementación para las funciones con prefijo de línea en la API de telefonía.
Sintaxis
LONG lineInitializeExA(
LPHLINEAPP lphLineApp,
HINSTANCE hInstance,
LINECALLBACK lpfnCallback,
LPCSTR lpszFriendlyAppName,
LPDWORD lpdwNumDevs,
LPDWORD lpdwAPIVersion,
LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
);
Parámetros
lphLineApp
Puntero a una ubicación que se rellena con el identificador de uso de la aplicación para TAPI.
hInstance
Identificador de instancia de la aplicación cliente o dll. La aplicación o dll puede pasar NULL para este parámetro, en cuyo caso TAPI usa el identificador de módulo del archivo ejecutable raíz del proceso (con fines de identificación de destinos de entrega de llamadas y prioridades de modo multimedia).
lpfnCallback
Dirección de una función de devolución de llamada que se invoca para determinar el estado y los eventos en el dispositivo de línea, las direcciones o las llamadas, cuando la aplicación usa el método "ventana oculta" de la notificación de eventos (para obtener más información, vea lineCallbackFunc). Este parámetro se omite y debe establecerse en null cuando la aplicación elige usar los mecanismos de notificación de eventos "controlador de eventos" o "puerto de finalización".
lpszFriendlyAppName
Puntero a un cadena de texto terminadanull que solo contiene caracteres que se pueden mostrar. Si este parámetro no es NULL, contiene un nombre proporcionado por la aplicación para la aplicación. Este nombre se proporciona en la estructura
lpdwNumDevs
Puntero a una DWORDubicación de tamaño. Tras completar correctamente esta solicitud, esta ubicación se rellena con el número de dispositivos de línea disponibles para la aplicación.
lpdwAPIVersion
Puntero a una DWORDubicación de tamaño. La aplicación debe inicializar este DWORD, antes de llamar a esta función, a la versión de API más alta que está diseñada para admitir (por ejemplo, el mismo valor que pasaría a dwAPIHighVersion parámetro de lineNegotiateAPIVersion). No se deben usar valores artificialmente altos; el valor debe establecerse con precisión. TAPI traduce los mensajes o estructuras más recientes en valores o formatos admitidos por la versión de la aplicación. Tras completar correctamente esta solicitud, esta ubicación se rellena con la versión de API más alta compatible con TAPI, lo que permite a la aplicación detectar y adaptarse a haber sido instalado en un sistema con una versión diferente de TAPI.
lpLineInitializeExParams
Puntero a una estructura de tipo LINEINITIALIZEEXPARAMS que contienen parámetros adicionales utilizados para establecer la asociación entre la aplicación y TAPI (en concreto, el mecanismo de notificación de eventos seleccionado de la aplicación y los parámetros asociados).
Valor devuelto
Devuelve cero si la solicitud se realiza correctamente o un número de error negativo si se produce un error. Los valores devueltos posibles son:
LINEERR_INVALAPPNAME, LINEERR_OPERATIONFAILED, LINEERR_INIFILECORRUPT, LINEERR_INVALPOINTER, LINEERR_REINIT, LINEERR_NOMEM, LINEERR_INVALPARAM.
Observaciones
Las aplicaciones deben seleccionar uno de los tres mecanismos mediante los cuales TAPI notifica a la aplicación de eventos de telefonía: Ventana oculta, Controlador de eventos o Puerto de finalización.
El mecanismo Ventana oculta se selecciona especificando LINEINITIALIZEEXOPTION_USEHIDDENWINDOW en el miembro dwOptions de la estructura LINEINITIALIZEEXPARA MS. En este mecanismo (que es el único mecanismo disponible para TAPI versión 1.x aplicaciones), TAPI crea una ventana en el contexto de la aplicación durante la lineInitializeEx o lineInitialize (para las aplicaciones TAPI versión 1.3 y 1.4) y subclases la ventana para que todos los mensajes publicados en él se controlan mediante un WNDPROC en sí mismo. Cuando TAPI tiene un mensaje para entregar a la aplicación, TAPI envía un mensaje a la ventana oculta. Cuando se recibe el mensaje (que solo puede ocurrir cuando la aplicación llama a la función Windows GetMessage), Windows cambia el contexto de proceso a la de la aplicación e invoca el WNDPROC en TAPI. A continuación, TAPI entrega el mensaje a la aplicación llamando allineCallbackProc
El mecanismo controlador de eventos se selecciona especificando LINEINITIALIZEEXOPTION_USEEVENT en el miembro dwOptions
El mecanismo puerto de finalización se selecciona especificando LINEINITIALIZEEXOPTION_USECOMPLETION PUERTO en el
Cuando una aplicación multiproceso usa el mecanismo de controlador de eventos y más de un subproceso está esperando el identificador, o el mecanismo de notificación del puerto de finalización y más de un subproceso está esperando en el puerto, es posible que los eventos de telefonía se procesen fuera de la secuencia. Esto no se debe a la secuencia de entrega de eventos de TAPI, pero se debe a la segmentación de tiempo de subprocesos o la ejecución de subprocesos en procesadores independientes.
Si se devuelve LINEERR_REINIT y se ha solicitado la reinicialización TAPI, por ejemplo, como resultado de agregar o quitar un proveedor de servicios de telefonía, solicitudes de lineInitializeEx se rechazan con este error hasta que la última aplicación cierra su uso de la API (mediante lineShutdown), en cuyo momento la nueva configuración se vuelve efectiva y las aplicaciones se vuelven a permitir que las aplicaciones llamen a lineInitializeEx.
Si se devuelve el valor de error LINEERR_INVALPARAM, el parámetro hInstance especificado no es válido.
La aplicación puede hacer referencia a dispositivos de línea individuales mediante identificadores de dispositivo de línea que van de cero a dwNumDevs menos uno. Una aplicación no debe suponer que estos dispositivos de línea son capaces de ninguna función TAPI determinada sin consultar primero sus funcionalidades de dispositivo lineGetDevCaps y lineGetAddressCaps.
Nota
El encabezado tapi.h define lineInitializeEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de |
Windows |
encabezado de |
tapi.h |
biblioteca de |
Tapi32.lib |
DLL de |
Tapi32.dll |
Consulte también
referencia de servicios de telefonía básica de