[TAPI32]
authorAmine Khaldi <amine.khaldi@reactos.org>
Sat, 28 Sep 2013 15:07:20 +0000 (15:07 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sat, 28 Sep 2013 15:07:20 +0000 (15:07 +0000)
* Sync with Wine 1.7.1.
CORE-7469

svn path=/trunk/; revision=60415

reactos/dll/win32/tapi32/CMakeLists.txt
reactos/dll/win32/tapi32/assisted.c
reactos/dll/win32/tapi32/line.c
reactos/dll/win32/tapi32/phone.c
reactos/dll/win32/tapi32/tapi32.spec
reactos/media/doc/README.WINE

index c738e41..5fc9bee 100644 (file)
@@ -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)
index f0ac6e1..3dba506 100644 (file)
@@ -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
 #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.@)
  */
index de59975..a4df21e 100644 (file)
@@ -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,13 +478,152 @@ 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)
 {
-    FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
+    static int warn_once;
+
+    if(!warn_once++)
+        FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
                                                  dwExtVersion, lpLineDevCaps);
     return LINEERR_OPERATIONFAILED;
 }
@@ -486,7 +634,10 @@ DWORD WINAPI lineGetDevCapsW(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVer
 DWORD WINAPI lineGetDevCapsA(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion,
                              DWORD dwExtVersion, LPLINEDEVCAPS lpLineDevCaps)
 {
-    FIXME("(%p, %08x, %08x, %08x, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion,
+    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,8 +1253,11 @@ DWORD WINAPI lineNegotiateAPIVersion(
   LPLINEEXTENSIONID lpExtensionID
 )
 {
-    FIXME("(%p, %d, %d, %d, %p, %p): stub.\n", hLineApp, dwDeviceID,
-         dwAPILowVersion, dwAPIHighVersion, lpdwAPIVersion, 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;
     return 0;
 }
@@ -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.@)
  */
index 9ca6fe1..5a8d8d4 100644 (file)
@@ -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.@)
  */
index 7310100..e377b9c 100644 (file)
@@ -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)
 @ 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)
 @ 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
 @ 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
 @ 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)
 @ 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
 @ 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)
 @ 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)
 @ 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)
index ba5dc55..65086b0 100644 (file)
@@ -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?!)