Commit 3681a280 authored by Alexandre Julliard's avatar Alexandre Julliard

oleaut32: Query the path of the correct kind of typelib when unregistering it.

parent 5189eef6
...@@ -283,30 +283,9 @@ static WCHAR *get_lcid_subkey( LCID lcid, SYSKIND syskind, WCHAR *buffer ) ...@@ -283,30 +283,9 @@ static WCHAR *get_lcid_subkey( LCID lcid, SYSKIND syskind, WCHAR *buffer )
static HRESULT TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, ITypeLib2 **ppTypeLib); static HRESULT TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, ITypeLib2 **ppTypeLib);
/**************************************************************************** /* Get the path to a registered type library. Helper for QueryPathOfRegTypeLib. */
* QueryPathOfRegTypeLib [OLEAUT32.164] static HRESULT query_typelib_path( REFGUID guid, WORD wMaj, WORD wMin,
* SYSKIND syskind, LCID lcid, LPBSTR path )
* Gets the path to a registered type library.
*
* PARAMS
* guid [I] referenced guid
* wMaj [I] major version
* wMin [I] minor version
* lcid [I] locale id
* path [O] path of typelib
*
* RETURNS
* Success: S_OK.
* Failure: If the type library is not registered then TYPE_E_LIBNOTREGISTERED
* or TYPE_E_REGISTRYACCESS if the type library registration key couldn't be
* opened.
*/
HRESULT WINAPI QueryPathOfRegTypeLib(
REFGUID guid,
WORD wMaj,
WORD wMin,
LCID lcid,
LPBSTR path )
{ {
HRESULT hr = TYPE_E_LIBNOTREGISTERED; HRESULT hr = TYPE_E_LIBNOTREGISTERED;
LCID myLCID = lcid; LCID myLCID = lcid;
...@@ -336,7 +315,7 @@ HRESULT WINAPI QueryPathOfRegTypeLib( ...@@ -336,7 +315,7 @@ HRESULT WINAPI QueryPathOfRegTypeLib(
{ {
LONG dwPathLen = sizeof(Path); LONG dwPathLen = sizeof(Path);
get_lcid_subkey( myLCID, SYS_WIN32, buffer ); get_lcid_subkey( myLCID, syskind, buffer );
if (RegQueryValueW(hkey, buffer, Path, &dwPathLen)) if (RegQueryValueW(hkey, buffer, Path, &dwPathLen))
{ {
...@@ -368,6 +347,29 @@ HRESULT WINAPI QueryPathOfRegTypeLib( ...@@ -368,6 +347,29 @@ HRESULT WINAPI QueryPathOfRegTypeLib(
return hr; return hr;
} }
/****************************************************************************
* QueryPathOfRegTypeLib [OLEAUT32.164]
*
* Gets the path to a registered type library.
*
* PARAMS
* guid [I] referenced guid
* wMaj [I] major version
* wMin [I] minor version
* lcid [I] locale id
* path [O] path of typelib
*
* RETURNS
* Success: S_OK.
* Failure: If the type library is not registered then TYPE_E_LIBNOTREGISTERED
* or TYPE_E_REGISTRYACCESS if the type library registration key couldn't be
* opened.
*/
HRESULT WINAPI QueryPathOfRegTypeLib( REFGUID guid, WORD wMaj, WORD wMin, LCID lcid, LPBSTR path )
{
return query_typelib_path( guid, wMaj, wMin, SYS_WIN32, lcid, path );
}
/****************************************************************************** /******************************************************************************
* CreateTypeLib [OLEAUT32.160] creates a typelib * CreateTypeLib [OLEAUT32.160] creates a typelib
* *
...@@ -799,7 +801,7 @@ HRESULT WINAPI UnRegisterTypeLib( ...@@ -799,7 +801,7 @@ HRESULT WINAPI UnRegisterTypeLib(
} }
/* get the path to the typelib on disk */ /* get the path to the typelib on disk */
if (QueryPathOfRegTypeLib(libid, wVerMajor, wVerMinor, lcid, &tlibPath) != S_OK) { if (query_typelib_path(libid, wVerMajor, wVerMinor, syskind, lcid, &tlibPath) != S_OK) {
result = E_INVALIDARG; result = E_INVALIDARG;
goto end; goto end;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment