updspapi: Added an updspapi implementation that forwards to setupapi.
diff --git a/configure b/configure
index 2a83b45..6426882 100755
--- a/configure
+++ b/configure
Binary files differ
diff --git a/configure.ac b/configure.ac
index 8d45409..aaeff42 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2055,6 +2055,7 @@
WINE_CONFIG_MAKEFILE([dlls/tapi32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/twain_32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/unicows/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
+WINE_CONFIG_MAKEFILE([dlls/updspapi/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/url/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/urlmon/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/urlmon/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests])
diff --git a/dlls/updspapi/Makefile.in b/dlls/updspapi/Makefile.in
new file mode 100644
index 0000000..8917f49
--- /dev/null
+++ b/dlls/updspapi/Makefile.in
@@ -0,0 +1,10 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = updspapi.dll
+IMPORTS = setupapi kernel32
+
+@MAKE_DLL_RULES@
+
+@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/updspapi/updspapi.spec b/dlls/updspapi/updspapi.spec
new file mode 100644
index 0000000..eb47bc4
--- /dev/null
+++ b/dlls/updspapi/updspapi.spec
@@ -0,0 +1,70 @@
+@ stdcall UpdSpCloseFileQueue(ptr) setupapi.SetupCloseFileQueue
+@ stdcall UpdSpCloseInfFile(long) setupapi.SetupCloseInfFile
+@ stdcall UpdSpCommitFileQueueA(long long ptr ptr) setupapi.SetupCommitFileQueueA
+@ stdcall UpdSpCommitFileQueueW(long long ptr ptr) setupapi.SetupCommitFileQueueW
+@ stdcall UpdSpCopyErrorA(long str str str str str long long str long ptr) setupapi.SetupCopyErrorA
+@ stdcall UpdSpCopyErrorW(long wstr wstr wstr wstr wstr long long wstr long ptr) setupapi.SetupCopyErrorW
+@ stdcall UpdSpDecompressOrCopyFileA(str str ptr) setupapi.SetupDecompressOrCopyFileA
+@ stdcall UpdSpDecompressOrCopyFileW(wstr wstr ptr) setupapi.SetupDecompressOrCopyFileW
+@ stdcall UpdSpDefaultQueueCallbackA(ptr long long long) setupapi.SetupDefaultQueueCallbackA
+@ stdcall UpdSpDefaultQueueCallbackW(ptr long long long) setupapi.SetupDefaultQueueCallbackW
+@ stdcall UpdSpDeleteErrorA(long str str long long) setupapi.SetupDeleteErrorA
+@ stdcall UpdSpDeleteErrorW(long wstr wstr long long) setupapi.SetupDeleteErrorW
+@ stdcall UpdSpEnumInfSectionsA(long long ptr long ptr) setupapi.SetupEnumInfSectionsA
+@ stdcall UpdSpEnumInfSectionsW(long long ptr long ptr) setupapi.SetupEnumInfSectionsW
+@ stdcall UpdSpFindFirstLineA(long str str ptr) setupapi.SetupFindFirstLineA
+@ stdcall UpdSpFindFirstLineW(long wstr wstr ptr) setupapi.SetupFindFirstLineW
+@ stdcall UpdSpFindNextLine(ptr ptr) setupapi.SetupFindNextLine
+@ stdcall UpdSpFindNextMatchLineA(ptr str ptr) setupapi.SetupFindNextMatchLineA
+@ stdcall UpdSpFindNextMatchLineW(ptr wstr ptr) setupapi.SetupFindNextMatchLineW
+@ stdcall UpdSpGetBinaryField(ptr long ptr long ptr) setupapi.SetupGetBinaryField
+@ stdcall UpdSpGetFieldCount(ptr) setupapi.SetupGetFieldCount
+@ stdcall UpdSpGetIntField(ptr long ptr) setupapi.SetupGetIntField
+@ stdcall UpdSpGetLineByIndexA(long str long ptr) setupapi.SetupGetLineByIndexA
+@ stdcall UpdSpGetLineByIndexW(long wstr long ptr) setupapi.SetupGetLineByIndexW
+@ stdcall UpdSpGetLineCountA(long str) setupapi.SetupGetLineCountA
+@ stdcall UpdSpGetLineCountW(long wstr) setupapi.SetupGetLineCountW
+@ stdcall UpdSpGetLineTextA(ptr long str str ptr long ptr) setupapi.SetupGetLineTextA
+@ stdcall UpdSpGetLineTextW(ptr long wstr wstr ptr long ptr) setupapi.SetupGetLineTextW
+@ stdcall UpdSpGetMultiSzFieldA(ptr long ptr long ptr) setupapi.SetupGetMultiSzFieldA
+@ stdcall UpdSpGetMultiSzFieldW(ptr long ptr long ptr) setupapi.SetupGetMultiSzFieldW
+@ stdcall UpdSpGetSourceFileLocationA(ptr ptr str ptr ptr long ptr) setupapi.SetupGetSourceFileLocationA
+@ stdcall UpdSpGetSourceFileLocationW(ptr ptr wstr ptr ptr long ptr) setupapi.SetupGetSourceFileLocationW
+@ stdcall UpdSpGetSourceInfoA(ptr long long ptr long ptr) setupapi.SetupGetSourceInfoA
+@ stdcall UpdSpGetSourceInfoW(ptr long long ptr long ptr) setupapi.SetupGetSourceInfoW
+@ stdcall UpdSpGetStringFieldA(ptr long ptr long ptr) setupapi.SetupGetStringFieldA
+@ stdcall UpdSpGetStringFieldW(ptr long ptr long ptr) setupapi.SetupGetStringFieldW
+@ stdcall UpdSpGetTargetPathA(ptr ptr str ptr long ptr) setupapi.SetupGetTargetPathA
+@ stdcall UpdSpGetTargetPathW(ptr ptr wstr ptr long ptr) setupapi.SetupGetTargetPathW
+@ stdcall UpdSpInitDefaultQueueCallback(long) setupapi.SetupInitDefaultQueueCallback
+@ stdcall UpdSpInitDefaultQueueCallbackEx(long long long long ptr) setupapi.SetupInitDefaultQueueCallbackEx
+@ stdcall UpdSpInstallFilesFromInfSectionA(long long long str str long) setupapi.SetupInstallFilesFromInfSectionA
+@ stdcall UpdSpInstallFilesFromInfSectionW(long long long wstr wstr long) setupapi.SetupInstallFilesFromInfSectionW
+@ stdcall UpdSpInstallFromInfSectionA(long long str long long str long ptr ptr long ptr) setupapi.SetupInstallFromInfSectionA
+@ stdcall UpdSpInstallFromInfSectionW(long long wstr long long wstr long ptr ptr long ptr) setupapi.SetupInstallFromInfSectionW
+@ stdcall UpdSpIterateCabinetA(str long ptr ptr) setupapi.SetupIterateCabinetA
+@ stdcall UpdSpIterateCabinetW(wstr long ptr ptr) setupapi.SetupIterateCabinetW
+@ stdcall UpdSpOpenAppendInfFileA(str long ptr) setupapi.SetupOpenAppendInfFileA
+@ stdcall UpdSpOpenAppendInfFileW(wstr long ptr) setupapi.SetupOpenAppendInfFileW
+@ stdcall UpdSpOpenFileQueue() setupapi.SetupOpenFileQueue
+@ stdcall UpdSpOpenInfFileA(str str long ptr) setupapi.SetupOpenInfFileA
+@ stdcall UpdSpOpenInfFileW(wstr wstr long ptr) setupapi.SetupOpenInfFileW
+@ stdcall UpdSpPromptForDiskA(ptr str str str str str long ptr long ptr) setupapi.SetupPromptForDiskA
+@ stdcall UpdSpPromptForDiskW(ptr wstr wstr wstr wstr wstr long ptr long ptr) setupapi.SetupPromptForDiskW
+@ stdcall UpdSpQueueCopyA(long str str str str str str str long) setupapi.SetupQueueCopyA
+@ stdcall UpdSpQueueCopySectionA(long str long long str long) setupapi.SetupQueueCopySectionA
+@ stdcall UpdSpQueueCopySectionW(long wstr long long wstr long) setupapi.SetupQueueCopySectionW
+@ stdcall UpdSpQueueCopyW(long wstr wstr wstr wstr wstr wstr wstr long) setupapi.SetupQueueCopyW
+@ stdcall UpdSpQueueDeleteA(long str str) setupapi.SetupQueueDeleteA
+@ stdcall UpdSpQueueDeleteSectionA(long long long str) setupapi.SetupQueueDeleteSectionA
+@ stdcall UpdSpQueueDeleteSectionW(long long long wstr) setupapi.SetupQueueDeleteSectionW
+@ stdcall UpdSpQueueDeleteW(long wstr wstr) setupapi.SetupQueueDeleteW
+@ stdcall UpdSpScanFileQueueA(long long long ptr ptr ptr) setupapi.SetupScanFileQueueA
+@ stdcall UpdSpScanFileQueueW(long long long ptr ptr ptr) setupapi.SetupScanFileQueueW
+@ stdcall UpdSpSetDirectoryIdA(long long str) setupapi.SetupSetDirectoryIdA
+@ stdcall UpdSpSetDirectoryIdW(long long wstr) setupapi.SetupSetDirectoryIdW
+@ stub UpdSpSetDynamicStringA
+@ stub UpdSpSetDynamicStringExA
+@ stub UpdSpSetDynamicStringExW
+@ stub UpdSpSetDynamicStringW
+@ stdcall UpdSpTermDefaultQueueCallback(ptr) setupapi.SetupTermDefaultQueueCallback