mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
[TAPI32]
* Sync with Wine 1.7.1. CORE-7469 svn path=/trunk/; revision=60415
This commit is contained in:
parent
8726317ef7
commit
6ea82ebd44
6 changed files with 319 additions and 64 deletions
|
@ -1,7 +1,6 @@
|
|||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
|
||||
add_definitions(-D__WINESRC__)
|
||||
|
||||
spec2def(tapi32.dll tapi32.spec)
|
||||
|
||||
list(APPEND SOURCE
|
||||
|
@ -13,12 +12,7 @@ list(APPEND SOURCE
|
|||
${CMAKE_CURRENT_BINARY_DIR}/tapi32.def)
|
||||
|
||||
add_library(tapi32 SHARED ${SOURCE})
|
||||
|
||||
set_module_type(tapi32 win32dll)
|
||||
|
||||
target_link_libraries(tapi32 wine)
|
||||
|
||||
add_importlibs(tapi32 msvcrt advapi32 kernel32 ntdll)
|
||||
add_dependencies(tapi32 psdk)
|
||||
|
||||
add_importlibs(tapi32 advapi32 msvcrt kernel32 ntdll)
|
||||
add_cd_file(TARGET tapi32 DESTINATION reactos/system32 FOR all)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* TAPI32 Assisted Telephony
|
||||
*
|
||||
* Copyright 1999 Andreas Mohr
|
||||
* Copyright 2011 André Hentschel
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -33,50 +34,61 @@
|
|||
#include <winreg.h>
|
||||
#include <objbase.h>
|
||||
#include <tapi.h>
|
||||
#include <wine/unicode.h>
|
||||
#include <wine/debug.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(tapi);
|
||||
|
||||
/***********************************************************************
|
||||
* tapiGetLocationInfo (TAPI32.@)
|
||||
* tapiGetLocationInfoW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI tapiGetLocationInfoA(LPSTR lpszCountryCode, LPSTR lpszCityCode)
|
||||
DWORD WINAPI tapiGetLocationInfoW(LPWSTR countrycode, LPWSTR citycode)
|
||||
{
|
||||
HKEY hkey, hsubkey;
|
||||
DWORD currid;
|
||||
DWORD valsize;
|
||||
DWORD type;
|
||||
DWORD bufsize;
|
||||
BYTE buf[100];
|
||||
char szlockey[20];
|
||||
if(!RegOpenKeyA(HKEY_LOCAL_MACHINE,
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Locations",
|
||||
&hkey) != ERROR_SUCCESS) {
|
||||
BYTE buf[200];
|
||||
WCHAR szlockey[20];
|
||||
|
||||
static const WCHAR currentidW[] = {'C','u','r','r','e','n','t','I','D',0};
|
||||
static const WCHAR locationW[] = {'L','o','c','a','t','i','o','n','%','u',0};
|
||||
static const WCHAR areacodeW[] = {'A','r','e','a','C','o','d','e',0};
|
||||
static const WCHAR countryW[] = {'C','o','u','n','t','r','y',0};
|
||||
static const WCHAR fmtW[] = {'%','u',0};
|
||||
|
||||
static const WCHAR locations_keyW[] =
|
||||
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
|
||||
'W','i','n','d','o','w','s','\\',
|
||||
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
|
||||
'T','e','l','e','p','h','o','n','y','\\','L','o','c','a','t','i','o','n','s',0};
|
||||
|
||||
if(!RegOpenKeyW(HKEY_LOCAL_MACHINE, locations_keyW, &hkey) != ERROR_SUCCESS) {
|
||||
valsize = sizeof( DWORD);
|
||||
if(!RegQueryValueExA(hkey, "CurrentID", 0, &type, (LPBYTE) &currid,
|
||||
&valsize) && type == REG_DWORD) {
|
||||
if(!RegQueryValueExW(hkey, currentidW, 0, &type, (LPBYTE) &currid, &valsize) &&
|
||||
type == REG_DWORD) {
|
||||
/* find a subkey called Location1, Location2... */
|
||||
sprintf( szlockey, "Location%u", currid);
|
||||
if( !RegOpenKeyA( hkey, szlockey, &hsubkey)) {
|
||||
if( lpszCityCode) {
|
||||
sprintfW( szlockey, locationW, currid);
|
||||
if( !RegOpenKeyW( hkey, szlockey, &hsubkey)) {
|
||||
if( citycode) {
|
||||
bufsize=sizeof(buf);
|
||||
if( !RegQueryValueExA( hsubkey, "AreaCode", 0, &type, buf,
|
||||
&bufsize) && type == REG_SZ) {
|
||||
lstrcpynA( lpszCityCode, (char *) buf, 8);
|
||||
if( !RegQueryValueExW( hsubkey, areacodeW, 0, &type, buf, &bufsize) &&
|
||||
type == REG_SZ) {
|
||||
lstrcpynW( citycode, (WCHAR *) buf, 8);
|
||||
} else
|
||||
lpszCityCode[0] = '\0';
|
||||
citycode[0] = '\0';
|
||||
}
|
||||
if( lpszCountryCode) {
|
||||
if( countrycode) {
|
||||
bufsize=sizeof(buf);
|
||||
if( !RegQueryValueExA( hsubkey, "Country", 0, &type, buf,
|
||||
&bufsize) && type == REG_DWORD)
|
||||
snprintf( lpszCountryCode, 8, "%u", *(LPDWORD) buf );
|
||||
if( !RegQueryValueExW( hsubkey, countryW, 0, &type, buf, &bufsize) &&
|
||||
type == REG_DWORD)
|
||||
snprintfW( countrycode, 8, fmtW, *(LPDWORD) buf );
|
||||
else
|
||||
lpszCountryCode[0] = '\0';
|
||||
countrycode[0] = '\0';
|
||||
}
|
||||
TRACE("(%p \"%s\", %p \"%s\"): success.\n",
|
||||
lpszCountryCode, debugstr_a(lpszCountryCode),
|
||||
lpszCityCode, debugstr_a(lpszCityCode));
|
||||
TRACE("(%p \"%s\", %p \"%s\"): success.\n", countrycode, debugstr_w(countrycode),
|
||||
citycode, debugstr_w(citycode));
|
||||
RegCloseKey( hkey);
|
||||
RegCloseKey( hsubkey);
|
||||
return 0; /* SUCCESS */
|
||||
|
@ -84,11 +96,34 @@ DWORD WINAPI tapiGetLocationInfoA(LPSTR lpszCountryCode, LPSTR lpszCityCode)
|
|||
}
|
||||
RegCloseKey( hkey);
|
||||
}
|
||||
WARN("(%p, %p): failed (no telephony registry entries?).\n",
|
||||
lpszCountryCode, lpszCityCode);
|
||||
WARN("(%p, %p): failed (no telephony registry entries?).\n", countrycode, citycode);
|
||||
return TAPIERR_REQUESTFAILED;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* tapiGetLocationInfoA (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI tapiGetLocationInfoA(LPSTR countrycode, LPSTR citycode)
|
||||
{
|
||||
DWORD ret, len;
|
||||
LPWSTR country, city;
|
||||
|
||||
len = MultiByteToWideChar( CP_ACP, 0, countrycode, -1, NULL, 0 );
|
||||
country = HeapAlloc( GetProcessHeap(), 0, len );
|
||||
MultiByteToWideChar( CP_ACP, 0, countrycode, -1, country, len );
|
||||
|
||||
len = MultiByteToWideChar( CP_ACP, 0, citycode, -1, NULL, 0 );
|
||||
city = HeapAlloc( GetProcessHeap(), 0, len );
|
||||
MultiByteToWideChar( CP_ACP, 0, citycode, -1, city, len );
|
||||
|
||||
ret = tapiGetLocationInfoW(country, city);
|
||||
|
||||
HeapFree( GetProcessHeap(), 0, city );
|
||||
HeapFree( GetProcessHeap(), 0, country );
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* tapiRequestMakeCall (TAPI32.@)
|
||||
*/
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <objbase.h>
|
||||
#include <tapi.h>
|
||||
#include <wine/debug.h>
|
||||
#include <wine/unicode.h>
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(tapi);
|
||||
|
||||
|
@ -137,6 +138,15 @@ DWORD WINAPI lineConfigDialogA(DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDevi
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineConfigDialogW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineConfigDialogW(DWORD dwDeviceID, HWND hwndOwner, LPCWSTR lpszDeviceClass)
|
||||
{
|
||||
FIXME("(%08x, %p, %s): stub.\n", dwDeviceID, hwndOwner, debugstr_w(lpszDeviceClass));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineConfigDialogEdit (TAPI32.@)
|
||||
*/
|
||||
|
@ -191,6 +201,15 @@ DWORD WINAPI lineDialA(HCALL hCall, LPCSTR lpszDestAddress, DWORD dwCountryCode)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineDialW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineDialW(HCALL hCall, LPCWSTR lpszDestAddress, DWORD dwCountryCode)
|
||||
{
|
||||
FIXME("(%p, %s, %08x): stub.\n", hCall, debugstr_w(lpszDestAddress), dwCountryCode);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineDrop (TAPI32.@)
|
||||
*/
|
||||
|
@ -299,18 +318,8 @@ DWORD WINAPI lineGetConfRelatedCalls(HCALL hCall, LPLINECALLLIST lpCallList)
|
|||
return 0;
|
||||
}
|
||||
|
||||
typedef struct tagTAPI_CountryInfo
|
||||
{
|
||||
DWORD dwCountryID;
|
||||
DWORD dwCountryCode;
|
||||
LPSTR lpCountryName;
|
||||
LPSTR lpSameAreaRule;
|
||||
LPSTR lpLongDistanceRule;
|
||||
LPSTR lpInternationalRule;
|
||||
} TAPI_CountryInfo;
|
||||
|
||||
/***********************************************************************
|
||||
* lineGetCountry (TAPI32.@)
|
||||
* lineGetCountryA (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineGetCountryA(DWORD dwCountryID, DWORD dwAPIVersion, LPLINECOUNTRYLIST lpLineCountryList)
|
||||
{
|
||||
|
@ -469,12 +478,151 @@ DWORD WINAPI lineGetCountryA(DWORD dwCountryID, DWORD dwAPIVersion, LPLINECOUNTR
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineGetCountryW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineGetCountryW(DWORD id, DWORD version, LPLINECOUNTRYLIST list)
|
||||
{
|
||||
static const WCHAR country_listW[] =
|
||||
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
|
||||
'W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
|
||||
'T','e','l','e','p','h','o','n','y','\\','C','o','u','n','t','r','y',' ','L','i','s','t',0};
|
||||
static const WCHAR international_ruleW[] =
|
||||
{'I','n','t','e','r','n','a','t','i','o','n','a','l','R','u','l','e',0};
|
||||
static const WCHAR longdistance_ruleW[] =
|
||||
{'L','o','n','g','D','i','s','t','a','n','c','e','R','u','l','e',0};
|
||||
static const WCHAR samearea_ruleW[] =
|
||||
{'S','a','m','e','A','r','e','a','R','u','l','e',0};
|
||||
static const WCHAR nameW[] =
|
||||
{'N','a','m','e',0};
|
||||
static const WCHAR country_codeW[] =
|
||||
{'C','o','u','n','t','r','y','C','o','d','e',0};
|
||||
DWORD total_size, offset, i, num_countries, max_subkey_len;
|
||||
LINECOUNTRYENTRY *entry;
|
||||
WCHAR *subkey_name;
|
||||
HKEY hkey;
|
||||
|
||||
if (!list) return LINEERR_INVALPOINTER;
|
||||
TRACE("(%08x, %08x, %p(%d))\n", id, version, list, list->dwTotalSize);
|
||||
|
||||
if (RegOpenKeyW(HKEY_LOCAL_MACHINE, country_listW, &hkey) != ERROR_SUCCESS)
|
||||
return LINEERR_INIFILECORRUPT;
|
||||
|
||||
total_size = list->dwTotalSize;
|
||||
offset = sizeof(LINECOUNTRYLIST);
|
||||
if (total_size < offset) return LINEERR_STRUCTURETOOSMALL;
|
||||
|
||||
memset(list, 0, total_size);
|
||||
list->dwTotalSize = total_size;
|
||||
list->dwUsedSize = offset;
|
||||
list->dwNumCountries = 0;
|
||||
list->dwCountryListSize = 0;
|
||||
list->dwCountryListOffset = offset;
|
||||
|
||||
entry = (LINECOUNTRYENTRY *)(list + 1);
|
||||
|
||||
if (RegQueryInfoKeyW(hkey, NULL, NULL, NULL, &num_countries, &max_subkey_len,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(hkey);
|
||||
return LINEERR_OPERATIONFAILED;
|
||||
}
|
||||
if (id) offset = sizeof(LINECOUNTRYENTRY);
|
||||
else offset += num_countries * sizeof(LINECOUNTRYENTRY);
|
||||
|
||||
max_subkey_len++;
|
||||
if (!(subkey_name = HeapAlloc(GetProcessHeap(), 0, max_subkey_len * sizeof(WCHAR))))
|
||||
{
|
||||
RegCloseKey(hkey);
|
||||
return LINEERR_NOMEM;
|
||||
}
|
||||
for (i = 0; i < num_countries; i++)
|
||||
{
|
||||
DWORD len, size, size_int, size_long, size_name, size_same;
|
||||
HKEY hsubkey;
|
||||
|
||||
if (RegEnumKeyW(hkey, i, subkey_name, max_subkey_len) != ERROR_SUCCESS) continue;
|
||||
if (id && (atoiW(subkey_name) != id)) continue;
|
||||
if (RegOpenKeyW(hkey, subkey_name, &hsubkey) != ERROR_SUCCESS) continue;
|
||||
|
||||
RegQueryValueExW(hsubkey, international_ruleW, NULL, NULL, NULL, &size_int);
|
||||
len = size_int;
|
||||
|
||||
RegQueryValueExW(hsubkey, longdistance_ruleW, NULL, NULL, NULL, &size_long);
|
||||
len += size_long;
|
||||
|
||||
RegQueryValueExW(hsubkey, nameW, NULL, NULL, NULL, &size_name);
|
||||
len += size_name;
|
||||
|
||||
RegQueryValueExW(hsubkey, samearea_ruleW, NULL, NULL, NULL, &size_same);
|
||||
len += size_same;
|
||||
|
||||
if (total_size < offset + len)
|
||||
{
|
||||
offset += len;
|
||||
RegCloseKey(hsubkey);
|
||||
if (id) break;
|
||||
continue;
|
||||
}
|
||||
list->dwNumCountries++;
|
||||
list->dwCountryListSize += sizeof(LINECOUNTRYENTRY);
|
||||
list->dwUsedSize += len + sizeof(LINECOUNTRYENTRY);
|
||||
|
||||
if (id) i = 0;
|
||||
entry[i].dwCountryID = atoiW(subkey_name);
|
||||
size = sizeof(DWORD);
|
||||
RegQueryValueExW(hsubkey, country_codeW, NULL, NULL, (BYTE *)&entry[i].dwCountryCode, &size);
|
||||
entry[i].dwNextCountryID = 0;
|
||||
|
||||
if (i > 0) entry[i - 1].dwNextCountryID = entry[i].dwCountryID;
|
||||
|
||||
/* add country name */
|
||||
entry[i].dwCountryNameSize = size_name;
|
||||
entry[i].dwCountryNameOffset = offset;
|
||||
RegQueryValueExW(hsubkey, nameW, NULL, NULL, (BYTE *)list + offset, &size_name);
|
||||
offset += size_name;
|
||||
|
||||
/* add Same Area Rule */
|
||||
entry[i].dwSameAreaRuleSize = size_same;
|
||||
entry[i].dwSameAreaRuleOffset = offset;
|
||||
RegQueryValueExW(hsubkey, samearea_ruleW, NULL, NULL, (BYTE *)list + offset, &size_same);
|
||||
offset += size_same;
|
||||
|
||||
/* add Long Distance Rule */
|
||||
entry[i].dwLongDistanceRuleSize = size_long;
|
||||
entry[i].dwLongDistanceRuleOffset = offset;
|
||||
RegQueryValueExW(hsubkey, longdistance_ruleW, NULL, NULL, (BYTE *)list + offset, &size_long);
|
||||
offset += size_long;
|
||||
|
||||
/* add Long Distance Rule */
|
||||
entry[i].dwInternationalRuleSize = size_int;
|
||||
entry[i].dwInternationalRuleOffset = offset;
|
||||
RegQueryValueExW(hsubkey, international_ruleW, NULL, NULL, (BYTE *)list + offset, &size_int);
|
||||
offset += size_int;
|
||||
RegCloseKey(hsubkey);
|
||||
|
||||
TRACE("added country %s at %p\n",
|
||||
debugstr_w((const WCHAR *)((const char *)list + entry[i].dwCountryNameOffset)), &entry[i]);
|
||||
if (id) break;
|
||||
}
|
||||
list->dwNeededSize = offset;
|
||||
|
||||
TRACE("%d available %d required\n", total_size, offset);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, subkey_name);
|
||||
RegCloseKey(hkey);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineGetDevCapsW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineGetDevCapsW(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion,
|
||||
DWORD dwExtVersion, LPLINEDEVCAPS lpLineDevCaps)
|
||||
{
|
||||
static int warn_once;
|
||||
|
||||
if(!warn_once++)
|
||||
FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
|
||||
dwExtVersion, lpLineDevCaps);
|
||||
return LINEERR_OPERATIONFAILED;
|
||||
|
@ -486,6 +634,9 @@ DWORD WINAPI lineGetDevCapsW(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVer
|
|||
DWORD WINAPI lineGetDevCapsA(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion,
|
||||
DWORD dwExtVersion, LPLINEDEVCAPS lpLineDevCaps)
|
||||
{
|
||||
static int warn_once;
|
||||
|
||||
if(!warn_once++)
|
||||
FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
|
||||
dwExtVersion, lpLineDevCaps);
|
||||
return LINEERR_OPERATIONFAILED;
|
||||
|
@ -541,6 +692,15 @@ DWORD WINAPI lineGetLineDevStatusA(HLINE hLine, LPLINEDEVSTATUS lpLineDevStatus)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineGetMessage (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineGetMessage(HLINEAPP hLineApp, LPLINEMESSAGE lpMessage, DWORD dwTimeout)
|
||||
{
|
||||
FIXME("(%p, %p, %08x): stub.\n", hLineApp, lpMessage, dwTimeout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineGetNewCalls (TAPI32.@)
|
||||
*/
|
||||
|
@ -818,7 +978,7 @@ DWORD WINAPI lineGetTranslateCapsA(HLINEAPP hLineApp, DWORD dwAPIVersion,
|
|||
strptr = ((LPBYTE) lpTranslateCaps) +
|
||||
lpTranslateCaps->dwCardListOffset + lpTranslateCaps->dwCardListSize;
|
||||
pLocEntry = (LPLINELOCATIONENTRY) (lpTranslateCaps + 1);
|
||||
/* key with Preferred CardID's */
|
||||
/* key with Preferred CardIDs */
|
||||
if( RegOpenKeyA(HKEY_CURRENT_USER, szLocationsKey, &hkCardLocations)
|
||||
!= ERROR_SUCCESS )
|
||||
hkCardLocations = 0;
|
||||
|
@ -1022,6 +1182,16 @@ LONG WINAPI lineInitializeExA(LPHLINEAPP lphLineApp, HINSTANCE hInstance, LINECA
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineInitializeExW (TAPI32.@)
|
||||
*/
|
||||
LONG WINAPI lineInitializeExW(LPHLINEAPP lphLineApp, HINSTANCE hInstance, LINECALLBACK lpfnCallback, LPCWSTR lpszFriendlyAppName, LPDWORD lpdwNumDevs, LPDWORD lpdwAPIVersion, LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams)
|
||||
{
|
||||
FIXME("(%p, %p, %p, %s, %p, %p, %p): stub.\n", lphLineApp, hInstance,
|
||||
lpfnCallback, debugstr_w(lpszFriendlyAppName), lpdwNumDevs, lpdwAPIVersion, lpLineInitializeExParams);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineMakeCallW (TAPI32.@)
|
||||
*/
|
||||
|
@ -1083,6 +1253,9 @@ DWORD WINAPI lineNegotiateAPIVersion(
|
|||
LPLINEEXTENSIONID lpExtensionID
|
||||
)
|
||||
{
|
||||
static int warn_once;
|
||||
|
||||
if(!warn_once++)
|
||||
FIXME("(%p, %d, %d, %d, %p, %p): stub.\n", hLineApp, dwDeviceID,
|
||||
dwAPILowVersion, dwAPIHighVersion, lpdwAPIVersion, lpExtensionID);
|
||||
*lpdwAPIVersion = dwAPIHighVersion;
|
||||
|
@ -1365,6 +1538,18 @@ DWORD WINAPI lineTranslateAddressA(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dw
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineTranslateAddressW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineTranslateAddressW(HLINEAPP hLineApp, DWORD dwDeviceID,
|
||||
DWORD dwAPIVersion, LPCWSTR lpszAddressIn, DWORD dwCard,
|
||||
DWORD dwTranslateOptions, LPLINETRANSLATEOUTPUT lpTranslateOutput)
|
||||
{
|
||||
FIXME("(%p, %08x, %08x, %s, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
|
||||
debugstr_w(lpszAddressIn), dwCard, dwTranslateOptions, lpTranslateOutput);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineTranslateDialog (TAPI32.@)
|
||||
*/
|
||||
|
@ -1374,6 +1559,17 @@ DWORD WINAPI lineTranslateDialogA(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwA
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineTranslateDialogW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI lineTranslateDialogW(HLINEAPP hLineApp, DWORD dwDeviceID,
|
||||
DWORD dwAPIVersion, HWND hwndOwner, LPCWSTR lpszAddressIn)
|
||||
{
|
||||
FIXME("(%p, %08x, %08x, %p, %s): stub.\n", hLineApp, dwDeviceID,
|
||||
dwAPIVersion, hwndOwner, debugstr_w(lpszAddressIn));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* lineUncompleteCall (TAPI32.@)
|
||||
*/
|
||||
|
|
|
@ -159,6 +159,15 @@ DWORD WINAPI phoneGetLamp(HPHONE hPhone, DWORD dwButtonLampID,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* phoneGetMessage (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI phoneGetMessage(HPHONEAPP hPhoneApp, LPPHONEMESSAGE lpMessage, DWORD dwTimeout)
|
||||
{
|
||||
FIXME("(%p, %p, %08x): stub.\n", hPhoneApp, lpMessage, dwTimeout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* phoneGetRing (TAPI32.@)
|
||||
*/
|
||||
|
@ -208,6 +217,26 @@ DWORD WINAPI phoneInitialize(LPHPHONEAPP lphPhoneApp, HINSTANCE hInstance, PHONE
|
|||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* phoneInitializeiExA (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI phoneInitializeExA(LPHPHONEAPP lphPhoneApp, HINSTANCE hInstance, PHONECALLBACK lpfnCallback, LPCSTR lpszAppName, LPDWORD lpdwNumDevs, LPDWORD lpdwAPIVersion, LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams)
|
||||
{
|
||||
FIXME("(%p, %p, %p, %s, %p, %p, %p): stub.\n", lphPhoneApp, hInstance, lpfnCallback, lpszAppName, lpdwNumDevs, lpdwAPIVersion, lpPhoneInitializeExParams);
|
||||
*lpdwNumDevs = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* phoneInitializeiExW (TAPI32.@)
|
||||
*/
|
||||
DWORD WINAPI phoneInitializeExW(LPHPHONEAPP lphPhoneApp, HINSTANCE hInstance, PHONECALLBACK lpfnCallback, LPCWSTR lpszAppName, LPDWORD lpdwNumDevs, LPDWORD lpdwAPIVersion, LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams)
|
||||
{
|
||||
FIXME("(%p, %p, %p, %s, %p, %p, %p): stub.\n", lphPhoneApp, hInstance, lpfnCallback, debugstr_w(lpszAppName), lpdwNumDevs, lpdwAPIVersion, lpPhoneInitializeExParams);
|
||||
*lpdwNumDevs = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* phoneNegotiateAPIVersion (TAPI32.@)
|
||||
*/
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
@ stdcall lineAccept(long str long)
|
||||
@ stdcall lineAddProvider(str long ptr) lineAddProviderA
|
||||
@ stdcall lineAddProviderA(str long ptr)
|
||||
@ stdcall lineAddProviderW(wstr long ptr)
|
||||
@ stdcall lineAddToConference(long long)
|
||||
@ stub lineAgentSpecific
|
||||
@ stdcall lineAnswer(long str long)
|
||||
|
@ -41,10 +42,10 @@
|
|||
@ stdcall lineCompleteTransfer(long long ptr long)
|
||||
@ stdcall lineConfigDialog(long long str) lineConfigDialogA
|
||||
@ stdcall lineConfigDialogA(long long str)
|
||||
@ stdcall lineConfigDialogW(long long wstr)
|
||||
@ stdcall lineConfigDialogEdit(long long str ptr long ptr) lineConfigDialogEditA
|
||||
@ stdcall lineConfigDialogEditA(long long str ptr long ptr)
|
||||
@ stub lineConfigDialogEditW
|
||||
@ stub lineConfigDialogW
|
||||
@ stdcall lineConfigProvider(long long)
|
||||
@ stub lineCreateAgentA
|
||||
@ stub lineCreateAgentSessionA
|
||||
|
@ -55,7 +56,7 @@
|
|||
@ stdcall lineDevSpecificFeature(long long ptr long)
|
||||
@ stdcall lineDial(long str long) lineDialA
|
||||
@ stdcall lineDialA(long str long)
|
||||
@ stub lineDialW
|
||||
@ stdcall lineDialW(long wstr long)
|
||||
@ stdcall lineDrop(long str long)
|
||||
@ stdcall lineForward(long long long ptr long ptr ptr) lineForwardA
|
||||
@ stdcall lineForwardA(long long long ptr long ptr ptr)
|
||||
|
@ -97,10 +98,10 @@
|
|||
@ stdcall lineGetConfRelatedCalls(long ptr)
|
||||
@ stdcall lineGetCountry(long long ptr) lineGetCountryA
|
||||
@ stdcall lineGetCountryA(long long ptr)
|
||||
@ stub lineGetCountryW
|
||||
@ stdcall lineGetCountryW(long long ptr)
|
||||
@ stdcall lineGetDevCaps(long long long long ptr) lineGetDevCapsA
|
||||
@ stdcall lineGetDevCapsA(long long long long ptr)
|
||||
@ stdcall lineGetDevCapsW(ptr long long long ptr)
|
||||
@ stdcall lineGetDevCapsW(long long long long ptr)
|
||||
@ stdcall lineGetDevConfig(long ptr str) lineGetDevConfigA
|
||||
@ stdcall lineGetDevConfigA(long ptr str)
|
||||
@ stub lineGetDevConfigW
|
||||
|
@ -108,14 +109,14 @@
|
|||
@ stub lineGetGroupListW
|
||||
@ stdcall lineGetID(long long long long ptr str) lineGetIDA
|
||||
@ stdcall lineGetIDA(long long long long ptr str)
|
||||
@ stdcall lineGetIDW(ptr long ptr long ptr ptr)
|
||||
@ stdcall lineGetIDW(long long long long ptr wstr)
|
||||
@ stdcall lineGetIcon(long str ptr) lineGetIconA
|
||||
@ stdcall lineGetIconA(long str ptr)
|
||||
@ stub lineGetIconW
|
||||
@ stdcall lineGetLineDevStatus(long ptr) lineGetLineDevStatusA
|
||||
@ stdcall lineGetLineDevStatusA(long ptr)
|
||||
@ stub lineGetLineDevStatusW
|
||||
@ stub lineGetMessage
|
||||
@ stdcall lineGetMessage(long ptr long)
|
||||
@ stdcall lineGetNewCalls(long long long ptr)
|
||||
@ stdcall lineGetNumRings(long long ptr)
|
||||
@ stdcall lineGetProviderList(long ptr) lineGetProviderListA
|
||||
|
@ -138,10 +139,10 @@
|
|||
@ stdcall lineHold(long)
|
||||
@ stdcall lineInitialize(ptr long ptr str ptr)
|
||||
@ stdcall lineInitializeExA(ptr long ptr str ptr ptr ptr)
|
||||
@ stub lineInitializeExW
|
||||
@ stdcall lineInitializeExW(ptr long ptr wstr ptr ptr ptr)
|
||||
@ stdcall lineMakeCall(long ptr str long ptr) lineMakeCallA
|
||||
@ stdcall lineMakeCallA(long ptr str long ptr)
|
||||
@ stdcall lineMakeCallW(ptr ptr ptr long ptr)
|
||||
@ stdcall lineMakeCallW(long ptr wstr long ptr)
|
||||
@ stdcall lineMonitorDigits(long long)
|
||||
@ stdcall lineMonitorMedia(long long)
|
||||
@ stdcall lineMonitorTones(long ptr long)
|
||||
|
@ -209,10 +210,10 @@
|
|||
@ stdcall lineSwapHold(long long)
|
||||
@ stdcall lineTranslateAddress(long long long str long long ptr) lineTranslateAddressA
|
||||
@ stdcall lineTranslateAddressA(long long long str long long ptr)
|
||||
@ stub lineTranslateAddressW
|
||||
@ stdcall lineTranslateAddressW(long long long wstr long long ptr)
|
||||
@ stdcall lineTranslateDialog(long long long long str) lineTranslateDialogA
|
||||
@ stdcall lineTranslateDialogA(long long long long str)
|
||||
@ stub lineTranslateDialogW
|
||||
@ stdcall lineTranslateDialogW(long long long long wstr)
|
||||
@ stdcall lineUncompleteCall(long long)
|
||||
@ stdcall lineUnhold(long)
|
||||
@ stdcall lineUnpark(long long ptr str) lineUnparkA
|
||||
|
@ -240,7 +241,7 @@
|
|||
@ stdcall phoneGetIconA(long str ptr)
|
||||
@ stub phoneGetIconW
|
||||
@ stdcall phoneGetLamp(long long ptr)
|
||||
@ stub phoneGetMessage
|
||||
@ stdcall phoneGetMessage(long ptr long)
|
||||
@ stdcall phoneGetRing(long ptr ptr)
|
||||
@ stdcall phoneGetStatus(long ptr) phoneGetStatusA
|
||||
@ stdcall phoneGetStatusA(long ptr)
|
||||
|
@ -248,8 +249,8 @@
|
|||
@ stub phoneGetStatusW
|
||||
@ stdcall phoneGetVolume(long long ptr)
|
||||
@ stdcall phoneInitialize(ptr long ptr str ptr)
|
||||
@ stub phoneInitializeExA
|
||||
@ stub phoneInitializeExW
|
||||
@ stdcall phoneInitializeExA(ptr long ptr str ptr ptr ptr)
|
||||
@ stdcall phoneInitializeExW(ptr long ptr str ptr ptr ptr)
|
||||
@ stdcall phoneNegotiateAPIVersion(long long long long ptr ptr)
|
||||
@ stdcall phoneNegotiateExtVersion(long long long long long ptr)
|
||||
@ stdcall phoneOpen(long long ptr long long long long)
|
||||
|
@ -267,7 +268,7 @@
|
|||
@ stdcall phoneShutdown(long)
|
||||
@ stdcall tapiGetLocationInfo(str str) tapiGetLocationInfoA
|
||||
@ stdcall tapiGetLocationInfoA(str str)
|
||||
@ stub tapiGetLocationInfoW
|
||||
@ stdcall tapiGetLocationInfoW(wstr wstr)
|
||||
@ stub tapiRequestDrop
|
||||
@ stdcall tapiRequestMakeCall(str str str str) tapiRequestMakeCallA
|
||||
@ stdcall tapiRequestMakeCallA(str str str str)
|
||||
|
|
|
@ -186,7 +186,7 @@ reactos/dll/win32/stdole2.tlb # Synced to Wine-1.5.19
|
|||
reactos/dll/win32/stdole32.tlb # Synced to Wine-1.5.19
|
||||
reactos/dll/win32/sti # Synced to Wine-1.7.1
|
||||
reactos/dll/win32/sxs # Synced to Wine-1.7.1
|
||||
reactos/dll/win32/tapi32 # Autosync
|
||||
reactos/dll/win32/tapi32 # Synced to Wine-1.7.1
|
||||
reactos/dll/win32/traffic # Synced to Wine-1.5.19
|
||||
reactos/dll/win32/twain_32 # Out of sync
|
||||
reactos/dll/win32/unicows # Synced to Wine-1.3.32 (Win9x only, why do we need this?!)
|
||||
|
|
Loading…
Reference in a new issue