phoneInitializeEx
The phoneInitializeEx
function initializes the application's use of TAPI for subsequent use of the
phone abstraction. It registers the application's specified notification
mechanism and returns the number of phone devices available to the application.
A phone device is any device that provides an implementation for the
phone-prefixed functions in the Telephony API.
LONG phoneInitializeEx(
LPHPHONEAPP lphPhoneApp, |
|
HINSTANCE hInstance, |
|
PHONECALLBACK lpfnCallback, |
|
LPCSTR lpszFriendlyAppName, |
|
LPDWORD lpdwNumDevs, |
|
LPDWORD lpdwAPIVersion, |
|
LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams |
|
); |
|
Parameters
lphPhoneApp
A pointer to
a location that is filled with the application's usage handle for TAPI.
hInstance
The instance
handle of the client application or DLL. The application or DLL may pass NULL
for this parameter, in which case TAPI will use the module handle of the root
executable of the process.
lpfnCallback
The address
of a callback function that is invoked to determine status and events on the
line device, addresses, or calls, when the application is using the
"hidden window" method of event notification (for more information
see phoneCallbackFunc
lpszFriendlyAppName
A pointer to
a NULL-terminated ASCII string that contains only displayable ASCII characters.
If this parameter is not NULL, it contains an application-supplied name of the
application. This name is provided in the PHONESTATUS
lpdwNumDevs
A pointer to
a DWORD-sized location. Upon successful completion of this request, this
location is filled with the number of phone devices available to the
application.
lpdwAPIVersion
A pointer to
a DWORD-sized location. The application must initialize this DWORD, before
calling this function, to the highest API version it is designed to support
(for example, the same value it would pass into dwAPIHighVersion
parameter of phoneNegotiateAPIVersion
lpPhoneInitializeExParams
A pointer to
a structure of type PHONEINITIALIZEEXPARAMS
Return Values
Returns zero
if the request is successful or a negative error number if an error has
occurred. Possible return values are:
PHONEERR_INVALAPPNAME,
PHONEERR_OPERATIONFAILED, PHONEERR_INIFILECORRUPT, PHONEERR_INVALPOINTER,
PHONEERR_REINIT, PHONEERR_NOMEM, PHONEERR_INVALPARAM.
Remarks
Applications
must select one of three mechanisms by which TAPI notifies the application of
telephony events: Hidden Window, Event Handle, or Completion Port.
The Hidden
Window mechanism is selected by specifying
PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW in the dwOptions field in the PHONEINITIALIZEEXPARAMS19YB_V7 function.
The Event
Handle mechanism is selected by specifying PHONEINITIALIZEEXOPTION_USEEVENT in
the dwOptions field in the PHONEINITIALIZEEXPARAMS
The
Completion Port mechanism is selected by specifying
PHONEINITIALIZEEXOPTION_USECOMPLETION PORT in the dwOptions field in the
PHONEINITIALIZEEXPARAMS
When a
multithreaded application is using the Event Handle mechanism and more than one
thread is waiting on the handle, or the Completion Port notification mechanism
and more than one thread is waiting on the port, it is possible for telephony
events to be processed out of sequence. This is not due to the sequence of
delivery of events from TAPI, but would be caused by the time slicing of
threads or the execution of threads on separate processors.
If PHONEERR_REINIT
is returned and TAPI reinitialization has been requested, for example as a
result of adding or removing a Telephony service provider, then phoneInitializeEx
requests are rejected with this error until the last application shuts down its
usage of the API (using phoneShutdown), at which time the new
configuration becomes effective and applications are once again permitted to
call phoneInitializeEx.
If the
PHONEERR_INVALPARAM error value is returned, the specified hInstance
parameter is invalid.
The
application can refer to individual phone devices by using phone device IDs
that range from zero to dwNumDevs minus one. An application should not
assume that these phone devices are capable of any particular TAPI function
without first querying their device capabilities by phoneGetDevCaps.
For
information about the listing of service dependencies, see Service
Dependencies.
See Also