mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-01 02:46:32 +00:00
msi: Implement MsiSourceListGetInfoA.
This commit is contained in:
parent
886c970d76
commit
6cc2f0f402
2 changed files with 54 additions and 2 deletions
|
@ -258,7 +258,7 @@
|
|||
262 stub MsiSourceListForceResolutionExW
|
||||
263 stub MsiSourceListEnumSourcesA
|
||||
264 stub MsiSourceListEnumSourcesW
|
||||
265 stub MsiSourceListGetInfoA
|
||||
265 stdcall MsiSourceListGetInfoA(str str long long str ptr ptr)
|
||||
266 stub MsiSourceListGetInfoW
|
||||
267 stub MsiSourceListSetInfoA
|
||||
268 stub MsiSourceListSetInfoW
|
||||
|
|
|
@ -149,6 +149,58 @@ static UINT find_given_source(HKEY key, LPCWSTR szSource, media_info *ss)
|
|||
return rc;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
* MsiSourceListGetInfoA (MSI.@)
|
||||
*/
|
||||
UINT WINAPI MsiSourceListGetInfoA( LPCSTR szProduct, LPCSTR szUserSid,
|
||||
MSIINSTALLCONTEXT dwContext, DWORD dwOptions,
|
||||
LPCSTR szProperty, LPSTR szValue,
|
||||
LPDWORD pcchValue)
|
||||
{
|
||||
UINT ret;
|
||||
LPWSTR product = NULL;
|
||||
LPWSTR usersid = NULL;
|
||||
LPWSTR property = NULL;
|
||||
LPWSTR value = NULL;
|
||||
DWORD len = 0;
|
||||
|
||||
if (szValue && !pcchValue)
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
|
||||
if (szProduct) product = strdupAtoW(szProduct);
|
||||
if (szUserSid) usersid = strdupAtoW(szUserSid);
|
||||
if (szProperty) property = strdupAtoW(szProperty);
|
||||
|
||||
ret = MsiSourceListGetInfoW(product, usersid, dwContext, dwOptions,
|
||||
property, NULL, &len);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
goto done;
|
||||
|
||||
value = msi_alloc(++len * sizeof(WCHAR));
|
||||
if (!value)
|
||||
return ERROR_OUTOFMEMORY;
|
||||
|
||||
ret = MsiSourceListGetInfoW(product, usersid, dwContext, dwOptions,
|
||||
property, value, &len);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
goto done;
|
||||
|
||||
len = WideCharToMultiByte(CP_ACP, 0, value, -1, NULL, 0, NULL, NULL);
|
||||
if (*pcchValue >= len)
|
||||
WideCharToMultiByte(CP_ACP, 0, value, -1, szValue, len, NULL, NULL);
|
||||
else if (szValue)
|
||||
ret = ERROR_MORE_DATA;
|
||||
|
||||
*pcchValue = len - 1;
|
||||
|
||||
done:
|
||||
msi_free(product);
|
||||
msi_free(usersid);
|
||||
msi_free(property);
|
||||
msi_free(value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
* MsiSourceListGetInfoW (MSI.@)
|
||||
*/
|
||||
|
@ -173,7 +225,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
|
|||
FIXME("Unhandled options MSICODE_PATCH\n");
|
||||
return ERROR_FUNCTION_FAILED;
|
||||
}
|
||||
|
||||
|
||||
if (szUserSid)
|
||||
FIXME("Unhandled UserSid %s\n",debugstr_w(szUserSid));
|
||||
|
||||
|
|
Loading…
Reference in a new issue