James Hawkins : advpack: Implement the Open/
CloseINFEngine and TranslateINFStringEx
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Feb 21 05:04:13 CST 2006
Module: wine
Branch: refs/heads/master
Commit: b88b48085151bfdee25a4f4ec64fae1af8b8bef3
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=b88b48085151bfdee25a4f4ec64fae1af8b8bef3
Author: James Hawkins <truiken at gmail.com>
Date: Mon Feb 20 21:42:25 2006 -0600
advpack: Implement the Open/CloseINFEngine and TranslateINFStringEx
trio of functions.
---
dlls/advpack/advpack.c | 38 ++++++++++++++++++++++++--------------
1 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/dlls/advpack/advpack.c b/dlls/advpack/advpack.c
index f6cdaa1..0e8c7e5 100644
--- a/dlls/advpack/advpack.c
+++ b/dlls/advpack/advpack.c
@@ -118,15 +118,13 @@ static void set_ldids(HINF hInf, PCSTR p
* RETURNS
* Success: S_OK.
* Failure: E_FAIL.
- *
- * BUGS
- * Unimplemented.
*/
HRESULT WINAPI CloseINFEngine(HINF hInf)
{
- FIXME("(%p) stub\n", hInf);
+ TRACE("(%p)\n", hInf);
- return E_FAIL;
+ SetupCloseInfFile(hInf);
+ return S_OK;
}
/***********************************************************************
@@ -405,17 +403,23 @@ BOOL WINAPI NeedReboot(DWORD dwRebootChe
* RETURNS
* Success: S_OK.
* Failure: E_FAIL.
- *
- * BUGS
- * Unimplemented.
*/
HRESULT WINAPI OpenINFEngine(PCSTR pszInfFilename, PCSTR pszInstallSection,
DWORD dwFlags, HINF *phInf, PVOID pvReserved)
{
- FIXME("(%p, %p, %ld, %p, %p) stub\n", pszInfFilename, pszInstallSection,
+ TRACE("(%p, %p, %ld, %p, %p)\n", pszInfFilename, pszInstallSection,
dwFlags, phInf, pvReserved);
- return E_FAIL;
+ if (!phInf)
+ return E_INVALIDARG;
+
+ *phInf = SetupOpenInfFileA(pszInfFilename, NULL, INF_STYLE_WIN4, NULL);
+ if (*phInf == INVALID_HANDLE_VALUE)
+ return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
+
+ set_ldids(*phInf, pszInstallSection);
+
+ return S_OK;
}
/***********************************************************************
@@ -621,19 +625,25 @@ HRESULT WINAPI TranslateInfString(PCSTR
* When translating more than one keys, this method is more efficient
* than calling TranslateInfString, because the INF file is only
* opened once.
- *
- * BUGS
- * Unimplemented.
*/
HRESULT WINAPI TranslateInfStringEx(HINF hInf, PCSTR pszInfFilename,
PCSTR pszTranslateSection, PCSTR pszTranslateKey,
PSTR pszBuffer, DWORD dwBufferSize,
PDWORD pdwRequiredSize, PVOID pvReserved)
{
- FIXME("(%p, %p, %p, %p, %p, %ld, %p, %p) stub\n", hInf, pszInfFilename,
+ TRACE("(%p, %p, %p, %p, %p, %ld, %p, %p)\n", hInf, pszInfFilename,
pszTranslateSection, pszTranslateKey, pszBuffer, dwBufferSize,
pdwRequiredSize, pvReserved);
+ if (!SetupGetLineTextA(NULL, hInf, pszTranslateSection, pszTranslateKey,
+ pszBuffer, dwBufferSize, pdwRequiredSize))
+ {
+ if (dwBufferSize < *pdwRequiredSize)
+ return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+
+ return SPAPI_E_LINE_NOT_FOUND;
+ }
+
return E_FAIL;
}
More information about the wine-cvs
mailing list