Hans Leidekker : setupapi: Implement StringTableLookUpStringEx.

Alexandre Julliard julliard at winehq.org
Tue Jan 6 08:23:18 CST 2009


Module: wine
Branch: master
Commit: 18b5366c35f95eb6e7fc6e19c50c371a81d5a980
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=18b5366c35f95eb6e7fc6e19c50c371a81d5a980

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Jan  6 10:38:49 2009 +0100

setupapi: Implement StringTableLookUpStringEx.

---

 dlls/setupapi/stringtable.c |   49 ++++++++++++++++++++++++------------------
 1 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/dlls/setupapi/stringtable.c b/dlls/setupapi/stringtable.c
index 2f43c5c..1907fbb 100644
--- a/dlls/setupapi/stringtable.c
+++ b/dlls/setupapi/stringtable.c
@@ -446,35 +446,40 @@ StringTableGetExtraData(HSTRING_TABLE hStringTable,
 
 
 /**************************************************************************
- * StringTableLookUpString [SETUPAPI.@]
+ * StringTableLookUpStringEx [SETUPAPI.@]
  *
- * Searches a string table for a given string.
+ * Searches a string table and extra data for a given string.
  *
  * PARAMS
  *     hStringTable [I] Handle to the string table
  *     lpString     [I] String to be searched for
  *     dwFlags      [I] Flags
  *                        1: case sensitive compare
+ *     lpExtraData  [O] Pointer to the buffer that receives the extra data
+ *     lpReserved   [I/O] Unused
  *
  * RETURNS
  *     Success: String ID
  *     Failure: -1
  */
 DWORD WINAPI
-StringTableLookUpString(HSTRING_TABLE hStringTable,
-                        LPWSTR lpString,
-                        DWORD dwFlags)
+StringTableLookUpStringEx(HSTRING_TABLE hStringTable,
+                          LPWSTR lpString,
+                          DWORD dwFlags,
+                          LPVOID lpExtraData,
+                          LPDWORD lpReserved)
 {
     PSTRING_TABLE pStringTable;
     DWORD i;
 
-    TRACE("%p %s %x\n", hStringTable, debugstr_w(lpString), dwFlags);
+    TRACE("%p %s %x %p, %p\n", hStringTable, debugstr_w(lpString), dwFlags,
+          lpExtraData, lpReserved);
 
     pStringTable = (PSTRING_TABLE)hStringTable;
     if (pStringTable == NULL)
     {
         ERR("Invalid hStringTable!\n");
-        return (DWORD)-1;
+        return ~0u;
     }
 
     /* Search for existing string in the string table */
@@ -485,46 +490,48 @@ StringTableLookUpString(HSTRING_TABLE hStringTable,
             if (dwFlags & 1)
             {
                 if (!lstrcmpW(pStringTable->pSlots[i].pString, lpString))
+                {
+                    if (lpExtraData)
+                        memcpy(lpExtraData, pStringTable->pSlots[i].pData, pStringTable->pSlots[i].dwSize);
                     return i + 1;
+                }
             }
             else
             {
                 if (!lstrcmpiW(pStringTable->pSlots[i].pString, lpString))
+                {
+                    if (lpExtraData)
+                        memcpy(lpExtraData, pStringTable->pSlots[i].pData, pStringTable->pSlots[i].dwSize);
                     return i + 1;
+                }
             }
         }
     }
-
-    return (DWORD)-1;
+    return ~0u;
 }
 
 
 /**************************************************************************
- * StringTableLookUpStringEx [SETUPAPI.@]
+ * StringTableLookUpString [SETUPAPI.@]
  *
- * Searches a string table and extra data for a given string.
+ * Searches a string table for a given string.
  *
  * PARAMS
  *     hStringTable [I] Handle to the string table
  *     lpString     [I] String to be searched for
  *     dwFlags      [I] Flags
  *                        1: case sensitive compare
- *     lpExtraData  [O] Pointer to the buffer that receives the extra data
- *     lpReserved   [I/O] Unused
  *
  * RETURNS
  *     Success: String ID
- *     Failure: -1
+ *     Failure: ~0u
  */
 DWORD WINAPI
-StringTableLookUpStringEx(HSTRING_TABLE hStringTable,
-                          LPWSTR lpString,
-                          DWORD dwFlags,
-                          LPVOID lpExtraData,
-                          LPDWORD lpReserved)
+StringTableLookUpString(HSTRING_TABLE hStringTable,
+                        LPWSTR lpString,
+                        DWORD dwFlags)
 {
-    FIXME("\n");
-    return (DWORD)-1;
+    return StringTableLookUpStringEx(hStringTable, lpString, dwFlags, NULL, NULL);
 }
 
 




More information about the wine-cvs mailing list