Modified: trunk/reactos/include/wine/setupapi.h
Modified: trunk/reactos/lib/setupapi/misc.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/include/wine/setupapi.h 2005-01-24 11:53:36 UTC (rev 13247)
+++ trunk/reactos/include/wine/setupapi.h 2005-01-24 14:17:30 UTC (rev 13248)
@@ -613,11 +613,12 @@
#define SPDRP_MAXIMUM_PROPERTY 0x00000023
-VOID WINAPI MyFree( LPVOID lpMem );
-LPVOID WINAPI MyMalloc( DWORD dwSize );
-LPVOID WINAPI MyRealloc( LPVOID lpSrc, DWORD dwSize );
+LPWSTR WINAPI DuplicateString(LPCWSTR lpSrc);
+VOID WINAPI MyFree(LPVOID lpMem);
+LPVOID WINAPI MyMalloc(DWORD dwSize);
+LPVOID WINAPI MyRealloc(LPVOID lpSrc, DWORD dwSize);
-LONG WINAPI QueryRegistryValue( HKEY, LPCWSTR, LPBYTE *, LPDWORD, LPDWORD );
+LONG WINAPI QueryRegistryValue(HKEY, LPCWSTR, LPBYTE *, LPDWORD, LPDWORD);
void WINAPI InstallHinfSectionA( HWND hwnd, HINSTANCE handle, LPCSTR cmdline, INT show );
void WINAPI InstallHinfSectionW( HWND hwnd, HINSTANCE handle, LPCWSTR cmdline, INT show );
--- trunk/reactos/lib/setupapi/misc.c 2005-01-24 11:53:36 UTC (rev 13247)
+++ trunk/reactos/lib/setupapi/misc.c 2005-01-24 14:17:30 UTC (rev 13248)
@@ -91,3 +91,82 @@
return HeapReAlloc(GetProcessHeap(), 0, lpSrc, dwSize);
}
+
+
+/**************************************************************************
+ * DuplicateString [SETUPAPI.@]
+ *
+ * Duplicates a unicode string.
+ *
+ * PARAMS
+ * lpSrc [I] pointer to the unicode string that will be duplicated
+ *
+ * RETURNS
+ * Success: pointer to the duplicated unicode string
+ * Failure: NULL
+ *
+ * NOTES
+ * Call MyFree() to release the duplicated string.
+ */
+
+LPWSTR WINAPI DuplicateString(LPCWSTR lpSrc)
+{
+ LPWSTR lpDst;
+
+ lpDst = MyMalloc((lstrlenW(lpSrc) + 1) * sizeof(WCHAR));
+ if (lpDst == NULL)
+ return NULL;
+
+ wcscpy(lpDst, lpSrc);
+
+ return lpDst;
+}
+
+
+/**************************************************************************
+ * QueryRegistryValue [SETUPAPI.@]
+ *
+ * Retrieves value data from the registry and allocates memory for the
+ * value data.
+ *
+ * PARAMS
+ * hKey [I] Handle of the key to query
+ * lpValueName [I] Name of value under hkey to query
+ * lpData [O] Destination for the values contents,
+ * lpType [O] Destination for the value type
+ * lpcbData [O] Destination for the size of data
+ *
+ * RETURNS
+ * Success: ERROR_SUCCESS
+ * Failure: Otherwise
+ *
+ * NOTES
+ * Use MyFree to release the lpData buffer.
+ */
+
+LONG WINAPI QueryRegistryValue(HKEY hKey,
+ LPCWSTR lpValueName,
+ LPBYTE *lpData,
+ LPDWORD lpType,
+ LPDWORD lpcbData)
+{
+ LONG lError;
+
+ /* Get required buffer size */
+ *lpcbData = 0;
+ lError = RegQueryValueExW(hKey, lpValueName, 0, lpType, NULL, lpcbData);
+ if (lError != ERROR_SUCCESS)
+ return lError;
+
+ /* Allocate buffer */
+ *lpData = MyMalloc(*lpcbData);
+ if (*lpData == NULL)
+ return ERROR_NOT_ENOUGH_MEMORY;
+
+ /* Query registry value */
+ lError = RegQueryValueExW(hKey, lpValueName, 0, lpType, *lpData, lpcbData);
+ if (lError != ERROR_SUCCESS)
+ MyFree(*lpData);
+
+ return lError;
+}
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-01-24 11:53:36 UTC (rev 13247)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-01-24 14:17:30 UTC (rev 13248)
@@ -21,7 +21,7 @@
@ stub DelimStringToMultiSz
@ stub DestroyTextFileReadBuffer
@ stub DoesUserHavePrivilege
-@ stub DuplicateString
+@ stdcall DuplicateString(wstr)
@ stub EnablePrivilege
@ stub ExtensionPropSheetPageProc
@ stub FileExists
@@ -46,7 +46,7 @@
@ stub OpenAndMapFileForRead
@ stub OutOfMemory
@ stub QueryMultiSzValueToArray
-@ stub QueryRegistryValue
+@ stdcall QueryRegistryValue(long wstr ptr ptr ptr)
@ stub ReadAsciiOrUnicodeTextFile
@ stub RegistryDelnode
@ stub RetreiveFileSecurity