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