From 6ea82ebd44e2ba27b88f64f3a8397f897275f169 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 28 Sep 2013 15:07:20 +0000 Subject: [PATCH] [TAPI32] * Sync with Wine 1.7.1. CORE-7469 svn path=/trunk/; revision=60415 --- reactos/dll/win32/tapi32/CMakeLists.txt | 8 +- reactos/dll/win32/tapi32/assisted.c | 87 ++++++--- reactos/dll/win32/tapi32/line.c | 228 ++++++++++++++++++++++-- reactos/dll/win32/tapi32/phone.c | 29 +++ reactos/dll/win32/tapi32/tapi32.spec | 29 +-- reactos/media/doc/README.WINE | 2 +- 6 files changed, 319 insertions(+), 64 deletions(-) diff --git a/reactos/dll/win32/tapi32/CMakeLists.txt b/reactos/dll/win32/tapi32/CMakeLists.txt index c738e41ae1e..5fc9beeb833 100644 --- a/reactos/dll/win32/tapi32/CMakeLists.txt +++ b/reactos/dll/win32/tapi32/CMakeLists.txt @@ -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) diff --git a/reactos/dll/win32/tapi32/assisted.c b/reactos/dll/win32/tapi32/assisted.c index f0ac6e11c9d..3dba506481e 100644 --- a/reactos/dll/win32/tapi32/assisted.c +++ b/reactos/dll/win32/tapi32/assisted.c @@ -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 #include #include +#include #include 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.@) */ diff --git a/reactos/dll/win32/tapi32/line.c b/reactos/dll/win32/tapi32/line.c index de599755d26..a4df21e2a29 100644 --- a/reactos/dll/win32/tapi32/line.c +++ b/reactos/dll/win32/tapi32/line.c @@ -35,6 +35,7 @@ #include #include #include +#include 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.@) */ diff --git a/reactos/dll/win32/tapi32/phone.c b/reactos/dll/win32/tapi32/phone.c index 9ca6fe1bd6b..5a8d8d441f5 100644 --- a/reactos/dll/win32/tapi32/phone.c +++ b/reactos/dll/win32/tapi32/phone.c @@ -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.@) */ diff --git a/reactos/dll/win32/tapi32/tapi32.spec b/reactos/dll/win32/tapi32/tapi32.spec index 7310100206b..e377b9cd0d4 100644 --- a/reactos/dll/win32/tapi32/tapi32.spec +++ b/reactos/dll/win32/tapi32/tapi32.spec @@ -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) diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index ba5dc55f6a9..65086b00a90 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -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?!) -- 2.17.1