Module: wine Branch: master Commit: 24a10fc9aca34984a6372e21fdbcb3b83c36a812 URL: http://source.winehq.org/git/wine.git/?a=commit;h=24a10fc9aca34984a6372e21fd...
Author: Ricardo Filipe ricardo_barbano@hotmail.com Date: Mon Mar 2 16:21:28 2009 +0000
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..21135cd 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)