4 * Copyright 1999 Andreas Mohr
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
33 #include "wine/debug.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(tapi
);
38 static const char szCountrylistKey
[] =
39 "Software\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country List";
40 static const char szLocationsKey
[] =
41 "Software\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Locations";
42 static const char szCardsKey
[] =
43 "Software\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Cards";
46 /***********************************************************************
47 * lineAccept (TAPI32.@)
49 DWORD WINAPI
lineAccept(HCALL hCall
, LPCSTR lpsUserUserInfo
, DWORD dwSize
)
51 FIXME("(%p, %s, %d): stub.\n", hCall
, lpsUserUserInfo
, dwSize
);
55 /***********************************************************************
56 * lineAddProviderA (TAPI32.@)
58 DWORD WINAPI
lineAddProviderA(LPCSTR lpszProviderName
, HWND hwndOwner
, LPDWORD lpdwPermanentProviderID
)
60 FIXME("(%s, %p, %p): stub.\n", lpszProviderName
, hwndOwner
, lpdwPermanentProviderID
);
61 return LINEERR_OPERATIONFAILED
;
64 /***********************************************************************
65 * lineAddProviderW (TAPI32.@)
67 DWORD WINAPI
lineAddProviderW(LPCWSTR lpszProviderName
, HWND hwndOwner
, LPDWORD lpdwPermanentProviderID
)
69 FIXME("(%s, %p, %p): stub.\n", wine_dbgstr_w(lpszProviderName
), hwndOwner
, lpdwPermanentProviderID
);
70 return LINEERR_OPERATIONFAILED
;
73 /***********************************************************************
74 * lineAddToConference (TAPI32.@)
76 DWORD WINAPI
lineAddToConference(HCALL hConfCall
, HCALL hConsultCall
)
78 FIXME("(%p, %p): stub.\n", hConfCall
, hConsultCall
);
82 /***********************************************************************
83 * lineAnswer (TAPI32.@)
85 DWORD WINAPI
lineAnswer(HCALL hCall
, LPCSTR lpsUserUserInfo
, DWORD dwSize
)
87 FIXME("(%p, %s, %d): stub.\n", hCall
, lpsUserUserInfo
, dwSize
);
91 /***********************************************************************
92 * lineBlindTransfer (TAPI32.@)
94 DWORD WINAPI
lineBlindTransferA(HCALL hCall
, LPCSTR lpszDestAddress
, DWORD dwCountryCode
)
96 FIXME("(%p, %s, %08x): stub.\n", hCall
, lpszDestAddress
, dwCountryCode
);
100 /***********************************************************************
101 * lineClose (TAPI32.@)
103 DWORD WINAPI
lineClose(HLINE hLine
)
105 FIXME("(%p): stub.\n", hLine
);
109 /***********************************************************************
110 * lineCompleteCall (TAPI32.@)
112 DWORD WINAPI
lineCompleteCall(HCALL hCall
, LPDWORD lpdwCompletionID
, DWORD dwCompletionMode
, DWORD dwMessageID
)
114 FIXME("(%p, %p, %08x, %08x): stub.\n", hCall
, lpdwCompletionID
, dwCompletionMode
, dwMessageID
);
118 /***********************************************************************
119 * lineCompleteTransfer (TAPI32.@)
121 DWORD WINAPI
lineCompleteTransfer(HCALL hCall
, HCALL hConsultCall
, LPHCALL lphConfCall
, DWORD dwTransferMode
)
123 FIXME("(%p, %p, %p, %08x): stub.\n", hCall
, hConsultCall
, lphConfCall
, dwTransferMode
);
127 /***********************************************************************
128 * lineConfigDialog (TAPI32.@)
130 DWORD WINAPI
lineConfigDialogA(DWORD dwDeviceID
, HWND hwndOwner
, LPCSTR lpszDeviceClass
)
132 FIXME("(%08x, %p, %s): stub.\n", dwDeviceID
, hwndOwner
, lpszDeviceClass
);
136 /***********************************************************************
137 * lineConfigDialogW (TAPI32.@)
139 DWORD WINAPI
lineConfigDialogW(DWORD dwDeviceID
, HWND hwndOwner
, LPCWSTR lpszDeviceClass
)
141 FIXME("(%08x, %p, %s): stub.\n", dwDeviceID
, hwndOwner
, debugstr_w(lpszDeviceClass
));
145 /***********************************************************************
146 * lineConfigDialogEdit (TAPI32.@)
148 DWORD WINAPI
lineConfigDialogEditA(DWORD dwDeviceID
, HWND hwndOwner
, LPCSTR lpszDeviceClass
, LPVOID
const lpDeviceConfigIn
, DWORD dwSize
, LPVARSTRING lpDeviceConfigOut
)
154 /***********************************************************************
155 * lineConfigProvider (TAPI32.@)
157 DWORD WINAPI
lineConfigProvider(HWND hwndOwner
, DWORD dwPermanentProviderID
)
159 FIXME("(%p, %08x): stub.\n", hwndOwner
, dwPermanentProviderID
);
163 /***********************************************************************
164 * lineDeallocateCall (TAPI32.@)
166 DWORD WINAPI
lineDeallocateCall(HCALL hCall
)
168 FIXME("(%p): stub.\n", hCall
);
172 /***********************************************************************
173 * lineDevSpecific (TAPI32.@)
175 DWORD WINAPI
lineDevSpecific(HLINE hLine
, DWORD dwAddressId
, HCALL hCall
, LPVOID lpParams
, DWORD dwSize
)
177 FIXME("(%p, %08x, %p, %p, %d): stub.\n", hLine
, dwAddressId
, hCall
, lpParams
, dwSize
);
181 /***********************************************************************
182 * lineDevSpecificFeature (TAPI32.@)
184 DWORD WINAPI
lineDevSpecificFeature(HLINE hLine
, DWORD dwFeature
, LPVOID lpParams
, DWORD dwSize
)
186 FIXME("(%p, %08x, %p, %d): stub.\n", hLine
, dwFeature
, lpParams
, dwSize
);
190 /***********************************************************************
191 * lineDial (TAPI32.@)
193 DWORD WINAPI
lineDialA(HCALL hCall
, LPCSTR lpszDestAddress
, DWORD dwCountryCode
)
195 FIXME("(%p, %s, %08x): stub.\n", hCall
, lpszDestAddress
, dwCountryCode
);
199 /***********************************************************************
200 * lineDialW (TAPI32.@)
202 DWORD WINAPI
lineDialW(HCALL hCall
, LPCWSTR lpszDestAddress
, DWORD dwCountryCode
)
204 FIXME("(%p, %s, %08x): stub.\n", hCall
, debugstr_w(lpszDestAddress
), dwCountryCode
);
208 /***********************************************************************
209 * lineDrop (TAPI32.@)
211 DWORD WINAPI
lineDrop(HCALL hCall
, LPCSTR lpsUserUserInfo
, DWORD dwSize
)
213 FIXME("(%p, %s, %08x): stub.\n", hCall
, lpsUserUserInfo
, dwSize
);
217 /***********************************************************************
218 * lineForward (TAPI32.@)
220 DWORD WINAPI
lineForwardA(HLINE hLine
, DWORD bAllAddress
, DWORD dwAddressID
, LPLINEFORWARDLIST lpForwardList
, DWORD dwNumRingsNoAnswer
, LPHCALL lphConsultCall
, LPLINECALLPARAMS lpCallParams
)
226 /***********************************************************************
227 * lineGatherDigits (TAPI32.@)
229 DWORD WINAPI
lineGatherDigitsA(HCALL hCall
, DWORD dwDigitModes
, LPSTR lpsDigits
, DWORD dwNumDigits
, LPCSTR lpszTerminationDigits
, DWORD dwFirstDigitTimeout
, DWORD dwInterDigitTimeout
)
235 /***********************************************************************
236 * lineGenerateDigits (TAPI32.@)
238 DWORD WINAPI
lineGenerateDigitsA(HCALL hCall
, DWORD dwDigitModes
, LPCSTR lpszDigits
, DWORD dwDuration
)
240 FIXME("(%p, %08x, %s, %d): stub.\n", hCall
, dwDigitModes
, lpszDigits
, dwDuration
);
244 /***********************************************************************
245 * lineGenerateTone (TAPI32.@)
247 DWORD WINAPI
lineGenerateTone(HCALL hCall
, DWORD dwToneMode
, DWORD dwDuration
, DWORD dwNumTones
, LPLINEGENERATETONE lpTones
)
249 FIXME("(%p, %08x, %d, %d, %p): stub.\n", hCall
, dwToneMode
, dwDuration
, dwNumTones
, lpTones
);
253 /***********************************************************************
254 * lineGetAddressCaps (TAPI32.@)
256 DWORD WINAPI
lineGetAddressCapsA(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAddressID
, DWORD dwAPIVersion
, DWORD dwExtVersion
, LPLINEADDRESSCAPS lpAddressCaps
)
258 FIXME("(%p, %08x, %08x, %08x, %08x, %p): stub.\n", hLineApp
, dwDeviceID
, dwAddressID
, dwAPIVersion
, dwExtVersion
, lpAddressCaps
);
262 /***********************************************************************
263 * lineGetAddressID (TAPI32.@)
265 DWORD WINAPI
lineGetAddressIDA(HLINE hLine
, LPDWORD lpdwAddressID
, DWORD dwAddressMode
, LPCSTR lpsAddress
, DWORD dwSize
)
267 FIXME("%p, %p, %08x, %s, %d): stub.\n", hLine
, lpdwAddressID
, dwAddressMode
, lpsAddress
, dwSize
);
271 /***********************************************************************
272 * lineGetAddressStatus (TAPI32.@)
274 DWORD WINAPI
lineGetAddressStatusA(HLINE hLine
, DWORD dwAddressID
, LPLINEADDRESSSTATUS lpAddressStatus
)
276 FIXME("(%p, %08x, %p): stub.\n", hLine
, dwAddressID
, lpAddressStatus
);
280 /***********************************************************************
281 * lineGetAppPriority (TAPI32.@)
283 DWORD WINAPI
lineGetAppPriorityA(LPCSTR lpszAppFilename
, DWORD dwMediaMode
, LPLINEEXTENSIONID
const lpExtensionID
, DWORD dwRequestMode
, LPVARSTRING lpExtensionName
, LPDWORD lpdwPriority
)
285 FIXME("(%s, %08x, %p, %08x, %p, %p): stub.\n", lpszAppFilename
, dwMediaMode
, lpExtensionID
, dwRequestMode
, lpExtensionName
, lpdwPriority
);
289 /***********************************************************************
290 * lineGetCallInfo (TAPI32.@)
292 DWORD WINAPI
lineGetCallInfoA(HCALL hCall
, LPLINECALLINFO lpCallInfo
)
294 FIXME("(%p, %p): stub.\n", hCall
, lpCallInfo
);
298 /***********************************************************************
299 * lineGetCallStatus (TAPI32.@)
301 DWORD WINAPI
lineGetCallStatus(HCALL hCall
, LPLINECALLSTATUS lpCallStatus
)
303 FIXME("(%p, %p): stub.\n", hCall
, lpCallStatus
);
307 /***********************************************************************
308 * lineGetConfRelatedCalls (TAPI32.@)
310 DWORD WINAPI
lineGetConfRelatedCalls(HCALL hCall
, LPLINECALLLIST lpCallList
)
312 FIXME("(%p, %p): stub.\n", hCall
, lpCallList
);
316 typedef struct tagTAPI_CountryInfo
321 LPSTR lpSameAreaRule
;
322 LPSTR lpLongDistanceRule
;
323 LPSTR lpInternationalRule
;
326 /***********************************************************************
327 * lineGetCountry (TAPI32.@)
329 DWORD WINAPI
lineGetCountryA(DWORD dwCountryID
, DWORD dwAPIVersion
, LPLINECOUNTRYLIST lpLineCountryList
)
331 DWORD dwAvailSize
, dwOffset
, i
, num_countries
, max_subkey_len
;
332 LPLINECOUNTRYENTRY lpLCE
;
336 if(!lpLineCountryList
) {
337 TRACE("(%08x, %08x, %p): stub. Returning LINEERR_INVALPOINTER\n",
338 dwCountryID
, dwAPIVersion
, lpLineCountryList
);
339 return LINEERR_INVALPOINTER
;
342 TRACE("(%08x, %08x, %p(%d)): stub.\n",
343 dwCountryID
, dwAPIVersion
, lpLineCountryList
,
344 lpLineCountryList
->dwTotalSize
);
346 if(RegOpenKeyA(HKEY_LOCAL_MACHINE
, szCountrylistKey
, &hkey
)
348 return LINEERR_INIFILECORRUPT
;
351 dwAvailSize
= lpLineCountryList
->dwTotalSize
;
352 dwOffset
= sizeof (LINECOUNTRYLIST
);
354 if(dwAvailSize
<dwOffset
)
355 return LINEERR_STRUCTURETOOSMALL
;
357 memset(lpLineCountryList
, 0, dwAvailSize
);
359 lpLineCountryList
->dwTotalSize
= dwAvailSize
;
360 lpLineCountryList
->dwUsedSize
= dwOffset
;
361 lpLineCountryList
->dwNumCountries
= 0;
362 lpLineCountryList
->dwCountryListSize
= 0;
363 lpLineCountryList
->dwCountryListOffset
= dwOffset
;
365 lpLCE
= (LPLINECOUNTRYENTRY
)(&lpLineCountryList
[1]);
367 if(RegQueryInfoKeyA(hkey
, NULL
, NULL
, NULL
, &num_countries
, &max_subkey_len
,
368 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
) != ERROR_SUCCESS
) {
370 return LINEERR_STRUCTURETOOSMALL
;
374 dwOffset
= sizeof (LINECOUNTRYENTRY
);
376 dwOffset
+= num_countries
* sizeof (LINECOUNTRYENTRY
);
379 subkey_name
= HeapAlloc(GetProcessHeap(), 0, max_subkey_len
);
380 for(i
= 0; i
< num_countries
; i
++)
382 DWORD len
, size
, size_int
, size_long
, size_name
, size_same
;
385 if(RegEnumKeyA(hkey
, i
, subkey_name
, max_subkey_len
) !=
389 if(dwCountryID
&& (atoi(subkey_name
) != dwCountryID
))
392 if(RegOpenKeyA(hkey
, subkey_name
, &hsubkey
) != ERROR_SUCCESS
)
395 RegQueryValueExA(hsubkey
, "InternationalRule", NULL
, NULL
,
399 RegQueryValueExA(hsubkey
, "LongDistanceRule", NULL
, NULL
,
403 RegQueryValueExA(hsubkey
, "Name", NULL
, NULL
,
407 RegQueryValueExA(hsubkey
, "SameAreaRule", NULL
, NULL
,
411 if(dwAvailSize
< (dwOffset
+len
))
414 RegCloseKey(hsubkey
);
420 lpLineCountryList
->dwNumCountries
++;
421 lpLineCountryList
->dwCountryListSize
+= sizeof (LINECOUNTRYENTRY
);
422 lpLineCountryList
->dwUsedSize
+= len
+ sizeof (LINECOUNTRYENTRY
);
427 lpLCE
[i
].dwCountryID
= atoi(subkey_name
);
428 size
= sizeof(DWORD
);
429 RegQueryValueExA(hsubkey
, "CountryCode", NULL
, NULL
,
430 (BYTE
*)&lpLCE
[i
].dwCountryCode
, &size
);
432 lpLCE
[i
].dwNextCountryID
= 0;
435 lpLCE
[i
-1].dwNextCountryID
= lpLCE
[i
].dwCountryID
;
437 /* add country name */
438 lpLCE
[i
].dwCountryNameSize
= size_name
;
439 lpLCE
[i
].dwCountryNameOffset
= dwOffset
;
440 RegQueryValueExA(hsubkey
, "Name", NULL
, NULL
,
441 ((LPBYTE
)lpLineCountryList
)+dwOffset
,
443 dwOffset
+= size_name
;
445 /* add Same Area Rule */
446 lpLCE
[i
].dwSameAreaRuleSize
= size_same
;
447 lpLCE
[i
].dwSameAreaRuleOffset
= dwOffset
;
448 RegQueryValueExA(hsubkey
, "SameAreaRule", NULL
, NULL
,
449 ((LPBYTE
)lpLineCountryList
)+dwOffset
,
451 dwOffset
+= size_same
;
453 /* add Long Distance Rule */
454 lpLCE
[i
].dwLongDistanceRuleSize
= size_long
;
455 lpLCE
[i
].dwLongDistanceRuleOffset
= dwOffset
;
456 RegQueryValueExA(hsubkey
, "LongDistanceRule", NULL
, NULL
,
457 ((LPBYTE
)lpLineCountryList
)+dwOffset
,
459 dwOffset
+= size_long
;
461 /* add Long Distance Rule */
462 lpLCE
[i
].dwInternationalRuleSize
= size_int
;
463 lpLCE
[i
].dwInternationalRuleOffset
= dwOffset
;
464 RegQueryValueExA(hsubkey
, "InternationalRule", NULL
, NULL
,
465 ((LPBYTE
)lpLineCountryList
)+dwOffset
,
467 dwOffset
+= size_int
;
468 RegCloseKey(hsubkey
);
470 TRACE("Added country %s at %p\n", (LPSTR
)lpLineCountryList
+ lpLCE
[i
].dwCountryNameOffset
,
473 if(dwCountryID
) break;
476 lpLineCountryList
->dwNeededSize
= dwOffset
;
478 TRACE("%d available %d required\n", dwAvailSize
, dwOffset
);
480 HeapFree(GetProcessHeap(), 0, subkey_name
);
486 /***********************************************************************
487 * lineGetCountry (TAPI32.@)
489 DWORD WINAPI
lineGetCountryW(DWORD dwCountryID
, DWORD dwAPIVersion
, LPLINECOUNTRYLIST lpLineCountryList
)
491 return lineGetCountryA(dwCountryID
, dwAPIVersion
, lpLineCountryList
);
494 /***********************************************************************
495 * lineGetDevCapsW (TAPI32.@)
497 DWORD WINAPI
lineGetDevCapsW(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAPIVersion
,
498 DWORD dwExtVersion
, LPLINEDEVCAPS lpLineDevCaps
)
500 static int warn_once
;
503 FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp
, dwDeviceID
, dwAPIVersion
,
504 dwExtVersion
, lpLineDevCaps
);
505 return LINEERR_OPERATIONFAILED
;
508 /***********************************************************************
509 * lineGetDevCapsA (TAPI32.@)
511 DWORD WINAPI
lineGetDevCapsA(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAPIVersion
,
512 DWORD dwExtVersion
, LPLINEDEVCAPS lpLineDevCaps
)
514 static int warn_once
;
517 FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp
, dwDeviceID
, dwAPIVersion
,
518 dwExtVersion
, lpLineDevCaps
);
519 return LINEERR_OPERATIONFAILED
;
522 /***********************************************************************
523 * lineGetDevConfig (TAPI32.@)
525 DWORD WINAPI
lineGetDevConfigA(DWORD dwDeviceID
, LPVARSTRING lpDeviceConfig
, LPCSTR lpszDeviceClass
)
527 FIXME("(%08x, %p, %s): stub.\n", dwDeviceID
, lpDeviceConfig
, lpszDeviceClass
);
531 /***********************************************************************
532 * lineGetIDW (TAPI32.@)
534 DWORD WINAPI
lineGetIDW(HLINE hLine
, DWORD dwAddressID
, HCALL hCall
, DWORD dwSelect
,
535 LPVARSTRING lpDeviceID
, LPCWSTR lpszDeviceClass
)
537 FIXME("(%p, %08x, %p, %08x, %p, %s): stub.\n", hLine
, dwAddressID
, hCall
,
538 dwSelect
, lpDeviceID
,
539 debugstr_w(lpszDeviceClass
));
540 return LINEERR_OPERATIONFAILED
;
543 /***********************************************************************
544 * lineGetIDA (TAPI32.@)
546 DWORD WINAPI
lineGetIDA(HLINE hLine
, DWORD dwAddressID
, HCALL hCall
, DWORD dwSelect
,
547 LPVARSTRING lpDeviceID
, LPCSTR lpszDeviceClass
)
549 FIXME("(%p, %08x, %p, %08x, %p, %s): stub.\n", hLine
, dwAddressID
, hCall
,
550 dwSelect
, lpDeviceID
, lpszDeviceClass
);
551 return LINEERR_OPERATIONFAILED
;
554 /***********************************************************************
555 * lineGetIcon (TAPI32.@)
557 DWORD WINAPI
lineGetIconA(DWORD dwDeviceID
, LPCSTR lpszDeviceClass
, HICON
*lphIcon
)
559 FIXME("(%08x, %s, %p): stub.\n", dwDeviceID
, lpszDeviceClass
, lphIcon
);
563 /***********************************************************************
564 * lineGetLineDevStatus (TAPI32.@)
566 DWORD WINAPI
lineGetLineDevStatusA(HLINE hLine
, LPLINEDEVSTATUS lpLineDevStatus
)
568 FIXME("(%p, %p): stub.\n", hLine
, lpLineDevStatus
);
572 /***********************************************************************
573 * lineGetMessage (TAPI32.@)
575 DWORD WINAPI
lineGetMessage(HLINEAPP hLineApp
, LPLINEMESSAGE lpMessage
, DWORD dwTimeout
)
577 FIXME("(%p, %p, %08x): stub.\n", hLineApp
, lpMessage
, dwTimeout
);
581 /***********************************************************************
582 * lineGetNewCalls (TAPI32.@)
584 DWORD WINAPI
lineGetNewCalls(HLINE hLine
, DWORD dwAddressID
, DWORD dwSelect
, LPLINECALLLIST lpCallList
)
586 FIXME("(%p, %08x, %08x, %p): stub.\n", hLine
, dwAddressID
, dwSelect
, lpCallList
);
590 /***********************************************************************
591 * lineGetNumRings (TAPI32.@)
593 DWORD WINAPI
lineGetNumRings(HLINE hLine
, DWORD dwAddressID
, LPDWORD lpdwNumRings
)
595 FIXME("(%p, %08x, %p): stub.\n", hLine
, dwAddressID
, lpdwNumRings
);
599 /***********************************************************************
600 * lineGetProviderListA (TAPI32.@)
602 DWORD WINAPI
lineGetProviderListA(DWORD dwAPIVersion
, LPLINEPROVIDERLIST lpProviderList
)
604 FIXME("(%08x, %p): stub.\n", dwAPIVersion
, lpProviderList
);
605 return LINEERR_OPERATIONFAILED
;
608 /***********************************************************************
609 * lineGetProviderListW (TAPI32.@)
611 DWORD WINAPI
lineGetProviderListW(DWORD dwAPIVersion
, LPLINEPROVIDERLIST lpProviderList
)
613 FIXME("(%08x, %p): stub.\n", dwAPIVersion
, lpProviderList
);
614 return LINEERR_OPERATIONFAILED
;
617 /***********************************************************************
618 * lineGetRequest (TAPI32.@)
620 DWORD WINAPI
lineGetRequestA(HLINEAPP hLineApp
, DWORD dwRequestMode
, LPVOID lpRequestBuffer
)
622 FIXME("%p, %08x, %p): stub.\n", hLineApp
, dwRequestMode
, lpRequestBuffer
);
626 /***********************************************************************
627 * lineGetStatusMessages (TAPI32.@)
629 DWORD WINAPI
lineGetStatusMessages(HLINE hLine
, LPDWORD lpdwLineStatus
, LPDWORD lpdwAddressStates
)
631 FIXME("(%p, %p, %p): stub.\n", hLine
, lpdwLineStatus
, lpdwAddressStates
);
635 /***********************************************************************
636 * lineGetTranslateCaps (TAPI32.@)
638 * get address translate capabilities. Returns a LINETRANSLATECAPS
641 * +-----------------------+
645 * +-----------------------+
647 * |LocationsListSize |
648 * |LocationsListOffset | -+
649 * |CurrentLocationID | |
650 * +-----------------------+ |
653 * |CardListOffset | -|--+
654 * |CurrentPreferredCardID | | |
655 * +-----------------------+ | |
657 * |LINELOCATIONENTRY #1 | |
659 * +-----------------------+ |
661 * +-----------------------+ |
663 * |LINELOCATIONENTRY | |
665 * +-----------------------+ |
667 * |LINECARDENTRY #1 |
669 * +-----------------------+
671 * +-----------------------+
673 * |LINECARDENTRY #NumCards|
675 * +-----------------------+
676 * | room for strings named|
677 * | in the structures |
679 * +-----------------------+
681 DWORD WINAPI
lineGetTranslateCapsA(HLINEAPP hLineApp
, DWORD dwAPIVersion
,
682 LPLINETRANSLATECAPS lpTranslateCaps
)
684 HKEY hkLocations
, hkCards
, hkCardLocations
, hsubkey
;
685 int numlocations
, numcards
;
688 char *loc_key_name
= NULL
;
689 char *card_key_name
= NULL
;
695 LPLINELOCATIONENTRY pLocEntry
;
696 LPLINECARDENTRY pCardEntry
;
698 TRACE("(%p, %08x, %p (tot. size %d)\n", hLineApp
, dwAPIVersion
,
699 lpTranslateCaps
, lpTranslateCaps
->dwTotalSize
);
700 if( lpTranslateCaps
->dwTotalSize
< sizeof(LINETRANSLATECAPS
))
701 return LINEERR_STRUCTURETOOSMALL
;
702 if( RegCreateKeyA(HKEY_LOCAL_MACHINE
, szLocationsKey
, &hkLocations
)
704 ERR("unexpected registry error 1.\n");
705 return LINEERR_INIFILECORRUPT
;
707 lendword
= sizeof( DWORD
);
708 if( RegQueryValueExA( hkLocations
, "CurrentID", NULL
, NULL
,
709 (LPBYTE
) ¤tid
, &lendword
) != ERROR_SUCCESS
)
710 currentid
= -1; /* change this later */
711 if(RegQueryInfoKeyA(hkLocations
, NULL
, NULL
, NULL
, NULL
, &maxlockeylen
,
712 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
) != ERROR_SUCCESS
) {
713 RegCloseKey(hkLocations
);
714 ERR("unexpected registry error 2.\n");
715 return LINEERR_INIFILECORRUPT
;
718 if( maxlockeylen
< 10)
719 maxlockeylen
= 10; /* need this also if there is no key */
720 loc_key_name
= HeapAlloc( GetProcessHeap(), 0, maxlockeylen
);
721 /* first time through: calculate needed space */
725 while( RegEnumKeyA(hkLocations
, i
, loc_key_name
, maxlockeylen
)
729 if( strncasecmp(loc_key_name
, "location", 8) ||
730 (RegOpenKeyA(hkLocations
, loc_key_name
, &hsubkey
)
734 length
+= sizeof(LINELOCATIONENTRY
);
735 RegQueryValueExA(hsubkey
, "Name",NULL
,NULL
,NULL
,&size_val
);
737 RegQueryValueExA(hsubkey
, "AreaCode",NULL
,NULL
,NULL
,&size_val
);
739 RegQueryValueExA(hsubkey
, "OutsideAccess",NULL
,NULL
,NULL
,&size_val
);
741 RegQueryValueExA(hsubkey
, "LongDistanceAccess",NULL
,NULL
,NULL
,&size_val
);
743 RegQueryValueExA(hsubkey
, "DisableCallWaiting",NULL
,NULL
,NULL
,&size_val
);
745 /* fixme: what about TollPrefixList???? */
746 RegCloseKey(hsubkey
);
748 if(numlocations
== 0) {
749 /* add one location */
750 if( RegCreateKeyA( hkLocations
, "Location1", &hsubkey
)
755 length
+= sizeof(LINELOCATIONENTRY
) + 20 ;
756 RegSetValueExA( hsubkey
, "AreaCode", 0, REG_SZ
, (const BYTE
*)"010", 4);
757 GetLocaleInfoA( LOCALE_SYSTEM_DEFAULT
, LOCALE_ICOUNTRY
, buf
, 8);
759 RegSetValueExA( hsubkey
, "Country", 0, REG_DWORD
, (LPBYTE
)&dwval
,
761 RegSetValueExA( hsubkey
, "DisableCallWaiting", 0, REG_SZ
, (const BYTE
*)"", 1);
763 RegSetValueExA( hsubkey
, "Flags", 0, REG_DWORD
, (LPBYTE
)&dwval
,
765 RegSetValueExA( hsubkey
, "LongDistanceAccess", 0, REG_SZ
, (const BYTE
*)"", 1);
766 RegSetValueExA( hsubkey
, "Name", 0, REG_SZ
, (const BYTE
*)"New Location", 13);
767 RegSetValueExA( hsubkey
, "OutsideAccess", 0, REG_SZ
, (const BYTE
*)"", 1);
768 RegCloseKey(hsubkey
);
770 RegSetValueExA( hkLocations
, "CurrentID", 0, REG_DWORD
,
771 (LPBYTE
)&dwval
, sizeof(DWORD
));
773 RegSetValueExA( hkLocations
, "NextID", 0, REG_DWORD
, (LPBYTE
)&dwval
,
777 /* do the card list */
779 if( RegCreateKeyA(HKEY_CURRENT_USER
, szCardsKey
, &hkCards
)
781 if(RegQueryInfoKeyA(hkCards
, NULL
, NULL
, NULL
, NULL
, &maxcardkeylen
,
782 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
) == ERROR_SUCCESS
) {
784 if( maxcardkeylen
< 6) maxcardkeylen
= 6;
785 card_key_name
= HeapAlloc(GetProcessHeap(), 0, maxcardkeylen
);
787 while( RegEnumKeyA(hkCards
, i
, card_key_name
, maxcardkeylen
) ==
791 if( strncasecmp(card_key_name
, "card", 4) || ERROR_SUCCESS
!=
792 (RegOpenKeyA(hkCards
, card_key_name
, &hsubkey
) ))
795 length
+= sizeof(LINECARDENTRY
);
796 RegQueryValueExA(hsubkey
, "Name",NULL
,NULL
,NULL
,&size_val
);
798 RegQueryValueExA(hsubkey
, "LocalRule",NULL
,NULL
,NULL
,&size_val
);
800 RegQueryValueExA(hsubkey
, "LDRule",NULL
,NULL
,NULL
,&size_val
);
802 RegQueryValueExA(hsubkey
, "InternationalRule",NULL
,NULL
,NULL
,
805 RegCloseKey(hsubkey
);
808 /* add one card (direct call) */
810 ERROR_SUCCESS
== RegCreateKeyA( hkCards
, "Card1", &hsubkey
)) {
813 length
+= sizeof(LINECARDENTRY
) + 22 ;
814 RegSetValueExA( hsubkey
, "Name", 0, REG_SZ
, (const BYTE
*)"None (Direct Call)", 19);
816 RegSetValueExA( hsubkey
, "Flags", 0, REG_DWORD
, (LPBYTE
)&dwval
,
818 RegSetValueExA( hsubkey
, "InternationalRule", 0, REG_SZ
, (const BYTE
*)"", 1);
819 RegSetValueExA( hsubkey
, "LDRule", 0, REG_SZ
, (const BYTE
*)"", 1);
820 RegSetValueExA( hsubkey
, "LocalRule", 0, REG_SZ
, (const BYTE
*)"", 1);
821 RegCloseKey(hsubkey
);
823 RegSetValueExA( hkCards
, "NextID", 0, REG_DWORD
, (LPBYTE
)&dwval
,
826 } else hkCards
= 0; /* should really fail */
827 /* check if sufficient room is available */
828 lpTranslateCaps
->dwNeededSize
= sizeof(LINETRANSLATECAPS
) + length
;
829 if ( lpTranslateCaps
->dwNeededSize
> lpTranslateCaps
->dwTotalSize
) {
830 RegCloseKey( hkLocations
);
831 if( hkCards
) RegCloseKey( hkCards
);
832 HeapFree(GetProcessHeap(), 0, loc_key_name
);
833 HeapFree(GetProcessHeap(), 0, card_key_name
);
834 lpTranslateCaps
->dwUsedSize
= sizeof(LINETRANSLATECAPS
);
835 TRACE("Insufficient space: total %d needed %d used %d\n",
836 lpTranslateCaps
->dwTotalSize
,
837 lpTranslateCaps
->dwNeededSize
,
838 lpTranslateCaps
->dwUsedSize
);
841 /* fill in the LINETRANSLATECAPS structure */
842 lpTranslateCaps
->dwUsedSize
= lpTranslateCaps
->dwNeededSize
;
843 lpTranslateCaps
->dwNumLocations
= numlocations
;
844 lpTranslateCaps
->dwLocationListSize
= sizeof(LINELOCATIONENTRY
) *
845 lpTranslateCaps
->dwNumLocations
;
846 lpTranslateCaps
->dwLocationListOffset
= sizeof(LINETRANSLATECAPS
);
847 lpTranslateCaps
->dwCurrentLocationID
= currentid
;
848 lpTranslateCaps
->dwNumCards
= numcards
;
849 lpTranslateCaps
->dwCardListSize
= sizeof(LINECARDENTRY
) *
850 lpTranslateCaps
->dwNumCards
;
851 lpTranslateCaps
->dwCardListOffset
= lpTranslateCaps
->dwLocationListOffset
+
852 lpTranslateCaps
->dwLocationListSize
;
853 lpTranslateCaps
->dwCurrentPreferredCardID
= 0;
854 /* this is where the strings will be stored */
855 strptr
= ((LPBYTE
) lpTranslateCaps
) +
856 lpTranslateCaps
->dwCardListOffset
+ lpTranslateCaps
->dwCardListSize
;
857 pLocEntry
= (LPLINELOCATIONENTRY
) (lpTranslateCaps
+ 1);
858 /* key with Preferred CardIDs */
859 if( RegOpenKeyA(HKEY_CURRENT_USER
, szLocationsKey
, &hkCardLocations
)
862 /* second time through all locations */
864 while(RegEnumKeyA(hkLocations
, i
, loc_key_name
, maxlockeylen
)
868 if( strncasecmp(loc_key_name
, "location", 8) ||
869 (RegOpenKeyA(hkLocations
, loc_key_name
, &hsubkey
)
872 size_val
=sizeof(DWORD
);
873 if( RegQueryValueExA(hsubkey
, "ID",NULL
, NULL
,
874 (LPBYTE
) &(pLocEntry
->dwPermanentLocationID
), &size_val
) !=
876 pLocEntry
->dwPermanentLocationID
= atoi( loc_key_name
+ 8);
878 RegQueryValueExA(hsubkey
, "Name",NULL
,NULL
, strptr
, &size_val
);
879 pLocEntry
->dwLocationNameSize
= size_val
;
880 pLocEntry
->dwLocationNameOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
884 RegQueryValueExA(hsubkey
, "AreaCode",NULL
,NULL
, strptr
, &size_val
);
885 pLocEntry
->dwCityCodeSize
= size_val
;
886 pLocEntry
->dwCityCodeOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
890 RegQueryValueExA(hsubkey
, "OutsideAccess",NULL
,NULL
, strptr
, &size_val
);
891 pLocEntry
->dwLocalAccessCodeSize
= size_val
;
892 pLocEntry
->dwLocalAccessCodeOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
895 RegQueryValueExA(hsubkey
, "LongDistanceAccess",NULL
,NULL
, strptr
,
897 pLocEntry
->dwLongDistanceAccessCodeSize
= size_val
;
898 pLocEntry
->dwLongDistanceAccessCodeOffset
= strptr
-
899 (LPBYTE
) lpTranslateCaps
;
902 RegQueryValueExA(hsubkey
, "DisableCallWaiting",NULL
,NULL
, strptr
,
904 pLocEntry
->dwCancelCallWaitingSize
= size_val
;
905 pLocEntry
->dwCancelCallWaitingOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
908 pLocEntry
->dwTollPrefixListSize
= 0; /* FIXME */
909 pLocEntry
->dwTollPrefixListOffset
= 0; /* FIXME */
911 size_val
=sizeof(DWORD
);
912 RegQueryValueExA(hsubkey
, "Country",NULL
,NULL
,
913 (LPBYTE
) &(pLocEntry
->dwCountryCode
), &size_val
);
914 pLocEntry
->dwCountryID
= pLocEntry
->dwCountryCode
; /* FIXME */
915 RegQueryValueExA(hsubkey
, "Flags",NULL
,NULL
,
916 (LPBYTE
) &(pLocEntry
->dwOptions
), &size_val
);
917 RegCloseKey(hsubkey
);
918 /* get preferred cardid */
919 pLocEntry
->dwPreferredCardID
= 0;
920 if ( hkCardLocations
) {
921 size_val
=sizeof(DWORD
);
922 if(RegOpenKeyA(hkCardLocations
, loc_key_name
, &hsubkey
) ==
924 RegQueryValueExA(hsubkey
, "CallingCard",NULL
,NULL
,
925 (LPBYTE
) &(pLocEntry
->dwPreferredCardID
), &size_val
);
926 RegCloseKey(hsubkey
);
930 /* make sure there is a currentID */
932 currentid
= pLocEntry
->dwPermanentLocationID
;
933 lpTranslateCaps
->dwCurrentLocationID
= currentid
;
935 if(pLocEntry
->dwPermanentLocationID
== currentid
)
936 lpTranslateCaps
->dwCurrentPreferredCardID
=
937 pLocEntry
->dwPreferredCardID
;
938 TRACE("added: ID %d %s CountryCode %d CityCode %s CardID %d "
939 "LocalAccess: %s LongDistanceAccess: %s CountryID %d "
940 "Options %d CancelCallWait %s\n",
941 pLocEntry
->dwPermanentLocationID
,
942 debugstr_a( (char*)lpTranslateCaps
+ pLocEntry
->dwLocationNameOffset
),
943 pLocEntry
->dwCountryCode
,
944 debugstr_a( (char*)lpTranslateCaps
+ pLocEntry
->dwCityCodeOffset
),
945 pLocEntry
->dwPreferredCardID
,
946 debugstr_a( (char*)lpTranslateCaps
+ pLocEntry
->dwLocalAccessCodeOffset
),
947 debugstr_a( (char*)lpTranslateCaps
+ pLocEntry
->dwLongDistanceAccessCodeOffset
),
948 pLocEntry
->dwCountryID
,
949 pLocEntry
->dwOptions
,
950 debugstr_a( (char*)lpTranslateCaps
+ pLocEntry
->dwCancelCallWaitingOffset
));
953 pCardEntry
= (LPLINECARDENTRY
) pLocEntry
;
954 /* do the card list */
957 while( RegEnumKeyA(hkCards
, i
, card_key_name
, maxcardkeylen
) ==
961 if( strncasecmp(card_key_name
, "card", 4) ||
962 (RegOpenKeyA(hkCards
, card_key_name
, &hsubkey
) != ERROR_SUCCESS
))
964 size_val
=sizeof(DWORD
);
965 if( RegQueryValueExA(hsubkey
, "ID",NULL
, NULL
,
966 (LPBYTE
) &(pCardEntry
->dwPermanentCardID
), &size_val
) !=
968 pCardEntry
->dwPermanentCardID
= atoi( card_key_name
+ 4);
970 RegQueryValueExA(hsubkey
, "Name",NULL
,NULL
, strptr
, &size_val
);
971 pCardEntry
->dwCardNameSize
= size_val
;
972 pCardEntry
->dwCardNameOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
974 pCardEntry
->dwCardNumberDigits
= 1; /* FIXME */
976 RegQueryValueExA(hsubkey
, "LocalRule",NULL
,NULL
, strptr
, &size_val
);
977 pCardEntry
->dwSameAreaRuleSize
= size_val
;
978 pCardEntry
->dwSameAreaRuleOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
981 RegQueryValueExA(hsubkey
, "LDRule",NULL
,NULL
, strptr
, &size_val
);
982 pCardEntry
->dwLongDistanceRuleSize
= size_val
;
983 pCardEntry
->dwLongDistanceRuleOffset
= strptr
- (LPBYTE
) lpTranslateCaps
;
986 RegQueryValueExA(hsubkey
, "InternationalRule",NULL
,NULL
, strptr
,
988 pCardEntry
->dwInternationalRuleSize
= size_val
;
989 pCardEntry
->dwInternationalRuleOffset
= strptr
-
990 (LPBYTE
) lpTranslateCaps
;
992 size_val
=sizeof(DWORD
);
993 RegQueryValueExA(hsubkey
, "Flags",NULL
, NULL
,
994 (LPBYTE
) &(pCardEntry
->dwOptions
), &size_val
);
995 TRACE( "added card: ID %d name %s SameArea %s LongDistance %s International %s Options 0x%x\n",
996 pCardEntry
->dwPermanentCardID
,
997 debugstr_a( (char*)lpTranslateCaps
+ pCardEntry
->dwCardNameOffset
),
998 debugstr_a( (char*)lpTranslateCaps
+ pCardEntry
->dwSameAreaRuleOffset
),
999 debugstr_a( (char*)lpTranslateCaps
+ pCardEntry
->dwLongDistanceRuleOffset
),
1000 debugstr_a( (char*)lpTranslateCaps
+ pCardEntry
->dwInternationalRuleOffset
),
1001 pCardEntry
->dwOptions
);
1007 if(hkLocations
) RegCloseKey(hkLocations
);
1008 if(hkCards
) RegCloseKey(hkCards
);
1009 if(hkCardLocations
) RegCloseKey(hkCardLocations
);
1010 HeapFree(GetProcessHeap(), 0, loc_key_name
);
1011 HeapFree(GetProcessHeap(), 0, card_key_name
);
1012 TRACE(" returning success tot %d needed %d used %d\n",
1013 lpTranslateCaps
->dwTotalSize
,
1014 lpTranslateCaps
->dwNeededSize
,
1015 lpTranslateCaps
->dwUsedSize
);
1016 return 0; /* success */
1019 /***********************************************************************
1020 * lineHandoff (TAPI32.@)
1022 DWORD WINAPI
lineHandoffA(HCALL hCall
, LPCSTR lpszFileName
, DWORD dwMediaMode
)
1024 FIXME("(%p, %s, %08x): stub.\n", hCall
, lpszFileName
, dwMediaMode
);
1028 /***********************************************************************
1029 * lineHold (TAPI32.@)
1031 DWORD WINAPI
lineHold(HCALL hCall
)
1033 FIXME("(%p): stub.\n", hCall
);
1037 /***********************************************************************
1038 * lineInitialize (TAPI32.@)
1040 DWORD WINAPI
lineInitialize(
1041 LPHLINEAPP lphLineApp
,
1042 HINSTANCE hInstance
,
1043 LINECALLBACK lpfnCallback
,
1045 LPDWORD lpdwNumDevs
)
1047 FIXME("(%p, %p, %p, %s, %p): stub.\n", lphLineApp
, hInstance
,
1048 lpfnCallback
, debugstr_a(lpszAppName
), lpdwNumDevs
);
1052 /***********************************************************************
1053 * lineInitializeExA (TAPI32.@)
1055 LONG WINAPI
lineInitializeExA(LPHLINEAPP lphLineApp
, HINSTANCE hInstance
, LINECALLBACK lpfnCallback
, LPCSTR lpszFriendlyAppName
, LPDWORD lpdwNumDevs
, LPDWORD lpdwAPIVersion
, LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
)
1057 FIXME("(%p, %p, %p, %s, %p, %p, %p): stub.\n", lphLineApp
, hInstance
,
1058 lpfnCallback
, debugstr_a(lpszFriendlyAppName
), lpdwNumDevs
, lpdwAPIVersion
, lpLineInitializeExParams
);
1062 /***********************************************************************
1063 * lineInitializeExW (TAPI32.@)
1065 LONG WINAPI
lineInitializeExW(LPHLINEAPP lphLineApp
, HINSTANCE hInstance
, LINECALLBACK lpfnCallback
, LPCWSTR lpszFriendlyAppName
, LPDWORD lpdwNumDevs
, LPDWORD lpdwAPIVersion
, LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
)
1067 FIXME("(%p, %p, %p, %s, %p, %p, %p): stub.\n", lphLineApp
, hInstance
,
1068 lpfnCallback
, debugstr_w(lpszFriendlyAppName
), lpdwNumDevs
, lpdwAPIVersion
, lpLineInitializeExParams
);
1072 /***********************************************************************
1073 * lineMakeCallW (TAPI32.@)
1075 DWORD WINAPI
lineMakeCallW(HLINE hLine
, LPHCALL lphCall
, LPCWSTR lpszDestAddress
,
1076 DWORD dwCountryCode
, LPLINECALLPARAMS lpCallParams
)
1078 FIXME("(%p, %p, %s, %08x, %p): stub.\n", hLine
, lphCall
, debugstr_w(lpszDestAddress
),
1079 dwCountryCode
, lpCallParams
);
1080 return LINEERR_OPERATIONFAILED
;
1083 /***********************************************************************
1084 * lineMakeCallA (TAPI32.@)
1086 DWORD WINAPI
lineMakeCallA(HLINE hLine
, LPHCALL lphCall
, LPCSTR lpszDestAddress
,
1087 DWORD dwCountryCode
, LPLINECALLPARAMS lpCallParams
)
1089 FIXME("(%p, %p, %s, %08x, %p): stub.\n", hLine
, lphCall
, lpszDestAddress
,
1090 dwCountryCode
, lpCallParams
);
1091 return LINEERR_OPERATIONFAILED
;
1094 /***********************************************************************
1095 * lineMonitorDigits (TAPI32.@)
1097 DWORD WINAPI
lineMonitorDigits(HCALL hCall
, DWORD dwDigitModes
)
1099 FIXME("(%p, %08x): stub.\n", hCall
, dwDigitModes
);
1103 /***********************************************************************
1104 * lineMonitorMedia (TAPI32.@)
1106 DWORD WINAPI
lineMonitorMedia(HCALL hCall
, DWORD dwMediaModes
)
1108 FIXME("(%p, %08x): stub.\n", hCall
, dwMediaModes
);
1112 /***********************************************************************
1113 * lineMonitorTones (TAPI32.@)
1115 DWORD WINAPI
lineMonitorTones(HCALL hCall
, LPLINEMONITORTONE lpToneList
, DWORD dwNumEntries
)
1117 FIXME("(%p, %p, %08x): stub.\n", hCall
, lpToneList
, dwNumEntries
);
1121 /***********************************************************************
1122 * lineNegotiateAPIVersion (TAPI32.@)
1124 DWORD WINAPI
lineNegotiateAPIVersion(
1127 DWORD dwAPILowVersion
,
1128 DWORD dwAPIHighVersion
,
1129 LPDWORD lpdwAPIVersion
,
1130 LPLINEEXTENSIONID lpExtensionID
1133 static int warn_once
;
1136 FIXME("(%p, %d, %d, %d, %p, %p): stub.\n", hLineApp
, dwDeviceID
,
1137 dwAPILowVersion
, dwAPIHighVersion
, lpdwAPIVersion
, lpExtensionID
);
1138 *lpdwAPIVersion
= dwAPIHighVersion
;
1142 /***********************************************************************
1143 * lineNegotiateExtVersion (TAPI32.@)
1145 DWORD WINAPI
lineNegotiateExtVersion(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAPIVersion
, DWORD dwExtLowVersion
, DWORD dwExtHighVersion
, LPDWORD lpdwExtVersion
)
1151 /***********************************************************************
1152 * lineOpen (TAPI32.@)
1154 DWORD WINAPI
lineOpenA(HLINEAPP hLineApp
, DWORD dwDeviceID
, LPHLINE lphLine
, DWORD dwAPIVersion
, DWORD dwExtVersion
, DWORD dwCallbackInstance
, DWORD dwPrivileges
, DWORD dwMediaModes
, LPLINECALLPARAMS lpCallParams
)
1160 /***********************************************************************
1161 * linePark (TAPI32.@)
1163 DWORD WINAPI
lineParkA(HCALL hCall
, DWORD dwParkMode
, LPCSTR lpszDirAddress
, LPVARSTRING lpNonDirAddress
)
1165 FIXME("(%p, %08x, %s, %p): stub.\n", hCall
, dwParkMode
, lpszDirAddress
, lpNonDirAddress
);
1169 /***********************************************************************
1170 * linePickup (TAPI32.@)
1172 DWORD WINAPI
linePickupA(HLINE hLine
, DWORD dwAddressID
, LPHCALL lphCall
, LPCSTR lpszDestAddress
, LPCSTR lpszGroupID
)
1174 FIXME("(%p, %08x, %p, %s, %s): stub.\n", hLine
, dwAddressID
, lphCall
, lpszDestAddress
, lpszGroupID
);
1178 /***********************************************************************
1179 * linePrepareAddToConference (TAPI32.@)
1181 DWORD WINAPI
linePrepareAddToConferenceA(HCALL hConfCall
, LPHCALL lphConsultCall
, LPLINECALLPARAMS lpCallParams
)
1183 FIXME("(%p, %p, %p): stub.\n", hConfCall
, lphConsultCall
, lpCallParams
);
1187 /***********************************************************************
1188 * lineRedirect (TAPI32.@)
1190 DWORD WINAPI
lineRedirectA(
1192 LPCSTR lpszDestAddress
,
1193 DWORD dwCountryCode
) {
1199 /***********************************************************************
1200 * lineRegisterRequestRecipient (TAPI32.@)
1202 DWORD WINAPI
lineRegisterRequestRecipient(HLINEAPP hLineApp
, DWORD dwRegistrationInstance
, DWORD dwRequestMode
, DWORD dwEnable
)
1204 FIXME("(%p, %08x, %08x, %08x): stub.\n", hLineApp
, dwRegistrationInstance
, dwRequestMode
, dwEnable
);
1208 /***********************************************************************
1209 * lineReleaseUserUserInfo (TAPI32.@)
1211 DWORD WINAPI
lineReleaseUserUserInfo(HCALL hCall
)
1213 FIXME("(%p): stub.\n", hCall
);
1217 /***********************************************************************
1218 * lineRemoveFromConference (TAPI32.@)
1220 DWORD WINAPI
lineRemoveFromConference(HCALL hCall
)
1222 FIXME("(%p): stub.\n", hCall
);
1226 /***********************************************************************
1227 * lineRemoveProvider (TAPI32.@)
1229 DWORD WINAPI
lineRemoveProvider(DWORD dwPermanentProviderID
, HWND hwndOwner
)
1231 FIXME("(%08x, %p): stub.\n", dwPermanentProviderID
, hwndOwner
);
1235 /***********************************************************************
1236 * lineSecureCall (TAPI32.@)
1238 DWORD WINAPI
lineSecureCall(HCALL hCall
)
1240 FIXME("(%p): stub.\n", hCall
);
1244 /***********************************************************************
1245 * lineSendUserUserInfo (TAPI32.@)
1247 DWORD WINAPI
lineSendUserUserInfo(HCALL hCall
, LPCSTR lpsUserUserInfo
, DWORD dwSize
)
1249 FIXME("(%p, %s, %08x): stub.\n", hCall
, lpsUserUserInfo
, dwSize
);
1253 /***********************************************************************
1254 * lineSetAppPriority (TAPI32.@)
1256 DWORD WINAPI
lineSetAppPriorityA(LPCSTR lpszAppFilename
, DWORD dwMediaMode
, LPLINEEXTENSIONID
const lpExtensionID
, DWORD dwRequestMode
, LPCSTR lpszExtensionName
, DWORD dwPriority
)
1258 FIXME("(%s, %08x, %p, %08x, %s, %08x): stub.\n", lpszAppFilename
, dwMediaMode
, lpExtensionID
, dwRequestMode
, lpszExtensionName
, dwPriority
);
1262 /***********************************************************************
1263 * lineSetAppSpecific (TAPI32.@)
1265 DWORD WINAPI
lineSetAppSpecific(HCALL hCall
, DWORD dwAppSpecific
)
1267 FIXME("(%p, %08x): stub.\n", hCall
, dwAppSpecific
);
1271 /***********************************************************************
1272 * lineSetCallParams (TAPI32.@)
1274 DWORD WINAPI
lineSetCallParams(HCALL hCall
, DWORD dwBearerMode
, DWORD dwMinRate
, DWORD dwMaxRate
, LPLINEDIALPARAMS lpDialParams
)
1276 FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hCall
, dwBearerMode
, dwMinRate
, dwMaxRate
, lpDialParams
);
1280 /***********************************************************************
1281 * lineSetCallPrivilege (TAPI32.@)
1283 DWORD WINAPI
lineSetCallPrivilege(HCALL hCall
, DWORD dwCallPrivilege
)
1285 FIXME("(%p, %08x): stub.\n", hCall
, dwCallPrivilege
);
1289 /***********************************************************************
1290 * lineSetCurrentLocation (TAPI32.@)
1292 DWORD WINAPI
lineSetCurrentLocation(HLINEAPP hLineApp
, DWORD dwLocation
)
1294 FIXME("(%p, %08x): stub.\n", hLineApp
, dwLocation
);
1298 /***********************************************************************
1299 * lineSetDevConfig (TAPI32.@)
1301 DWORD WINAPI
lineSetDevConfigA(DWORD dwDeviceID
, LPVOID lpDeviceConfig
, DWORD dwSize
, LPCSTR lpszDeviceClass
)
1303 FIXME("(%08x, %p, %08x, %s): stub.\n", dwDeviceID
, lpDeviceConfig
, dwSize
, lpszDeviceClass
);
1307 /***********************************************************************
1308 * lineSetMediaControl (TAPI32.@)
1310 DWORD WINAPI
lineSetMediaControl(
1315 LPLINEMEDIACONTROLDIGIT
const lpDigitList
,
1316 DWORD dwDigitNumEntries
,
1317 LPLINEMEDIACONTROLMEDIA
const lpMediaList
,
1318 DWORD dwMediaNumEntries
,
1319 LPLINEMEDIACONTROLTONE
const lpToneList
,
1320 DWORD dwToneNumEntries
,
1321 LPLINEMEDIACONTROLCALLSTATE
const lpCallStateList
,
1322 DWORD dwCallStateNumEntries
)
1328 /***********************************************************************
1329 * lineSetMediaMode (TAPI32.@)
1331 DWORD WINAPI
lineSetMediaMode(HCALL hCall
, DWORD dwMediaModes
)
1333 FIXME("(%p, %08x): stub.\n", hCall
, dwMediaModes
);
1337 /***********************************************************************
1338 * lineSetNumRings (TAPI32.@)
1340 DWORD WINAPI
lineSetNumRings(HLINE hLine
, DWORD dwAddressID
, DWORD dwNumRings
)
1342 FIXME("(%p, %08x, %08x): stub.\n", hLine
, dwAddressID
, dwNumRings
);
1346 /***********************************************************************
1347 * lineSetStatusMessages (TAPI32.@)
1349 DWORD WINAPI
lineSetStatusMessages(HLINE hLine
, DWORD dwLineStates
, DWORD dwAddressStates
)
1351 FIXME("(%p, %08x, %08x): stub.\n", hLine
, dwLineStates
, dwAddressStates
);
1355 /***********************************************************************
1356 * lineSetTerminal (TAPI32.@)
1358 DWORD WINAPI
lineSetTerminal(HLINE hLine
, DWORD dwAddressID
, HCALL hCall
, DWORD dwSelect
, DWORD dwTerminalModes
, DWORD dwTerminalID
, DWORD bEnable
)
1360 FIXME("(%p, %08x, %p, %08x, %08x, %08x, %08x): stub.\n", hLine
, dwAddressID
, hCall
, dwSelect
, dwTerminalModes
, dwTerminalID
, bEnable
);
1364 /***********************************************************************
1365 * lineSetTollList (TAPI32.@)
1367 DWORD WINAPI
lineSetTollListA(HLINEAPP hLineApp
, DWORD dwDeviceID
, LPCSTR lpszAddressIn
, DWORD dwTollListOption
)
1369 FIXME("(%p, %08x, %s, %08x): stub.\n", hLineApp
, dwDeviceID
, lpszAddressIn
, dwTollListOption
);
1373 /***********************************************************************
1374 * lineSetupConference (TAPI32.@)
1376 DWORD WINAPI
lineSetupConferenceA(HCALL hCall
, HLINE hLine
, LPHCALL lphConfCall
, LPHCALL lphConsultCall
, DWORD dwNumParties
, LPLINECALLPARAMS lpCallParams
)
1378 FIXME("(%p, %p, %p, %p, %08x, %p): stub.\n", hCall
, hLine
, lphConfCall
, lphConsultCall
, dwNumParties
, lpCallParams
);
1382 /***********************************************************************
1383 * lineSetupTransfer (TAPI32.@)
1385 DWORD WINAPI
lineSetupTransferA(HCALL hCall
, LPHCALL lphConsultCall
, LPLINECALLPARAMS lpCallParams
)
1387 FIXME("(%p, %p, %p): stub.\n", hCall
, lphConsultCall
, lpCallParams
);
1391 /***********************************************************************
1392 * lineShutdown (TAPI32.@)
1394 DWORD WINAPI
lineShutdown(HLINEAPP hLineApp
)
1396 FIXME("(%p): stub.\n", hLineApp
);
1400 /***********************************************************************
1401 * lineSwapHold (TAPI32.@)
1403 DWORD WINAPI
lineSwapHold(HCALL hActiveCall
, HCALL hHeldCall
)
1405 FIXME("(active: %p, held: %p): stub.\n", hActiveCall
, hHeldCall
);
1409 /***********************************************************************
1410 * lineTranslateAddress (TAPI32.@)
1412 DWORD WINAPI
lineTranslateAddressA(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAPIVersion
, LPCSTR lpszAddressIn
, DWORD dwCard
, DWORD dwTranslateOptions
, LPLINETRANSLATEOUTPUT lpTranslateOutput
)
1414 FIXME("(%p, %08x, %08x, %s, %08x, %08x, %p): stub.\n", hLineApp
, dwDeviceID
, dwAPIVersion
, lpszAddressIn
, dwCard
, dwTranslateOptions
, lpTranslateOutput
);
1418 /***********************************************************************
1419 * lineTranslateAddressW (TAPI32.@)
1421 DWORD WINAPI
lineTranslateAddressW(HLINEAPP hLineApp
, DWORD dwDeviceID
,
1422 DWORD dwAPIVersion
, LPCWSTR lpszAddressIn
, DWORD dwCard
,
1423 DWORD dwTranslateOptions
, LPLINETRANSLATEOUTPUT lpTranslateOutput
)
1425 FIXME("(%p, %08x, %08x, %s, %08x, %08x, %p): stub.\n", hLineApp
, dwDeviceID
, dwAPIVersion
,
1426 debugstr_w(lpszAddressIn
), dwCard
, dwTranslateOptions
, lpTranslateOutput
);
1430 /***********************************************************************
1431 * lineTranslateDialog (TAPI32.@)
1433 DWORD WINAPI
lineTranslateDialogA(HLINEAPP hLineApp
, DWORD dwDeviceID
, DWORD dwAPIVersion
, HWND hwndOwner
, LPCSTR lpszAddressIn
)
1435 FIXME("(%p, %08x, %08x, %p, %s): stub.\n", hLineApp
, dwDeviceID
, dwAPIVersion
, hwndOwner
, lpszAddressIn
);
1439 /***********************************************************************
1440 * lineTranslateDialogW (TAPI32.@)
1442 DWORD WINAPI
lineTranslateDialogW(HLINEAPP hLineApp
, DWORD dwDeviceID
,
1443 DWORD dwAPIVersion
, HWND hwndOwner
, LPCWSTR lpszAddressIn
)
1445 FIXME("(%p, %08x, %08x, %p, %s): stub.\n", hLineApp
, dwDeviceID
,
1446 dwAPIVersion
, hwndOwner
, debugstr_w(lpszAddressIn
));
1450 /***********************************************************************
1451 * lineUncompleteCall (TAPI32.@)
1453 DWORD WINAPI
lineUncompleteCall(HLINE hLine
, DWORD dwCompletionID
)
1455 FIXME("(%p, %08x): stub.\n", hLine
, dwCompletionID
);
1459 /***********************************************************************
1460 * lineUnhold (TAPI32.@)
1462 DWORD WINAPI
lineUnhold(HCALL hCall
)
1464 FIXME("(%p): stub.\n", hCall
);
1468 /***********************************************************************
1469 * lineUnpark (TAPI32.@)
1471 DWORD WINAPI
lineUnparkA(HLINE hLine
, DWORD dwAddressID
, LPHCALL lphCall
, LPCSTR lpszDestAddress
)
1473 FIXME("(%p, %08x, %p, %s): stub.\n", hLine
, dwAddressID
, lphCall
, lpszDestAddress
);