[1/2] setupapi: implement SetupPromptForDiskA by wrapping around W version (try 3)

Ricardo Filipe ricardojdfilipe at gmail.com
Tue Mar 3 12:38:30 CST 2009


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20090303/8267d29f/attachment.html>
-------------- next part --------------
From f9421298228479bcc15048c81d061b61d45ea31c Mon Sep 17 00:00:00 2001
From: Ricardo Filipe <ricardo_barbano at hotmail.com>
Date: Mon, 2 Mar 2009 16:21:28 +0000
Subject: setupapi: implement SetupPromptForDiskA by wrapping around W version

---
 dlls/setupapi/dialog.c |   45 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/setupapi/stubs.c  |   14 --------------
 2 files changed, 45 insertions(+), 14 deletions(-)

diff --git a/dlls/setupapi/dialog.c b/dlls/setupapi/dialog.c
index aaa9453..8afcc75 100644
--- a/dlls/setupapi/dialog.c
+++ b/dlls/setupapi/dialog.c
@@ -183,6 +183,51 @@ static INT_PTR CALLBACK promptdisk_proc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
 }
 
 /***********************************************************************
+ *      SetupPromptForDiskA (SETUPAPI.@)
+ */
+UINT WINAPI SetupPromptForDiskA(HWND hwndParent, PCSTR DialogTitle, PCSTR DiskName,
+        PCSTR PathToSource, PCSTR FileSought, PCSTR TagFile, DWORD DiskPromptStyle,
+        PSTR PathBuffer, DWORD PathBufferSize, PDWORD PathRequiredSize)
+{
+    WCHAR *DialogTitleW, *DiskNameW, *PathToSourceW;
+    WCHAR *FileSoughtW, *TagFileW, PathBufferW[MAX_PATH];
+    UINT ret, length;
+
+    TRACE("%p, %s, %s, %s, %s, %s, 0x%08x, %p, %d, %p\n", hwndParent, debugstr_a(DialogTitle),
+          debugstr_a(DiskName), debugstr_a(PathToSource), debugstr_a(FileSought),
+          debugstr_a(TagFile), DiskPromptStyle, PathBuffer, PathBufferSize,
+          PathRequiredSize);
+
+    DialogTitleW = strdupAtoW(DialogTitle);
+    DiskNameW = strdupAtoW(DiskName);
+    PathToSourceW = strdupAtoW(PathToSource);
+    FileSoughtW = strdupAtoW(FileSought);
+    TagFileW = strdupAtoW(TagFile);
+
+    ret = SetupPromptForDiskW(hwndParent, DialogTitleW, DiskNameW, PathToSourceW,
+            FileSoughtW, TagFileW, DiskPromptStyle, PathBufferW, MAX_PATH, PathRequiredSize);
+
+    HeapFree(GetProcessHeap(), 0, DialogTitleW);
+    HeapFree(GetProcessHeap(), 0, DiskNameW);
+    HeapFree(GetProcessHeap(), 0, PathToSourceW);
+    HeapFree(GetProcessHeap(), 0, FileSoughtW);
+    HeapFree(GetProcessHeap(), 0, TagFileW);
+
+    if(ret == DPROMPT_SUCCESS)
+    {
+        length = WideCharToMultiByte(CP_ACP, 0, PathBufferW, -1, NULL, 0, NULL, NULL);
+        if(PathRequiredSize) *PathRequiredSize = length;
+        if(PathBuffer)
+        {
+            if(length > PathBufferSize)
+                return DPROMPT_BUFFERTOOSMALL;
+            WideCharToMultiByte(CP_ACP, 0, PathBufferW, -1, PathBuffer, length, NULL, NULL);
+        }
+    }
+    return ret;
+}
+
+/***********************************************************************
  *      SetupPromptForDiskW (SETUPAPI.@)
  */
 UINT WINAPI SetupPromptForDiskW(HWND hwndParent, PCWSTR DialogTitle, PCWSTR DiskName,
diff --git a/dlls/setupapi/stubs.c b/dlls/setupapi/stubs.c
index 287cb7e..3997447 100644
--- a/dlls/setupapi/stubs.c
+++ b/dlls/setupapi/stubs.c
@@ -247,20 +247,6 @@ BOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData)
 }
 
 /***********************************************************************
- *      SetupPromptForDiskA (SETUPAPI.@)
- */
-UINT WINAPI SetupPromptForDiskA(HWND hwndParent, PCSTR DialogTitle, PCSTR DiskName,
-        PCSTR PathToSource, PCSTR FileSought, PCSTR TagFile, DWORD DiskPromptStyle,
-        PSTR PathBuffer, DWORD PathBufferSize, PDWORD PathRequiredSize)
-{
-    FIXME("%p %s %s %s %s %s %d %p %d %p: stub\n", hwndParent, debugstr_a(DialogTitle),
-          debugstr_a(DiskName), debugstr_a(PathToSource), debugstr_a(FileSought),
-          debugstr_a(TagFile), DiskPromptStyle, PathBuffer, PathBufferSize,
-          PathRequiredSize);
-    return 0;
-}
-
-/***********************************************************************
  *      CM_Locate_DevNodeA (SETUPAPI.@)
  */
 CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags)
-- 
1.5.6.3


More information about the wine-patches mailing list