Juan Lang : cryptui: Implement CryptUIDlgSelectStoreA on top of CryptUIDlgSelectStoreW.
Module: wine Branch: master Commit: b378419a320306d0fc4bf4c5987cde4474e2f41e URL: http://source.winehq.org/git/wine.git/?a=commit;h=b378419a320306d0fc4bf4c598... Author: Juan Lang <juan.lang(a)gmail.com> Date: Sat Dec 20 10:10:24 2008 -0800 cryptui: Implement CryptUIDlgSelectStoreA on top of CryptUIDlgSelectStoreW. --- dlls/cryptui/main.c | 40 ++++++++++++++++++++++++++++++++++------ 1 files changed, 34 insertions(+), 6 deletions(-) diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index d6d4718..7ae27d2 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -119,21 +119,49 @@ typedef struct _CRYPTUI_SELECTSTORE_INFO_W } CRYPTUI_SELECTSTORE_INFO_W, *PCRYPTUI_SELECTSTORE_INFO_W; /*********************************************************************** - * CryptUIDlgSelectStoreA (CRYPTUI.@) + * CryptUIDlgSelectStoreW (CRYPTUI.@) */ -HCERTSTORE WINAPI CryptUIDlgSelectStoreA(PCRYPTUI_SELECTSTORE_INFO_A info) +HCERTSTORE WINAPI CryptUIDlgSelectStoreW(PCRYPTUI_SELECTSTORE_INFO_W info) { FIXME("(%p): stub\n", info); return NULL; } /*********************************************************************** - * CryptUIDlgSelectStoreW (CRYPTUI.@) + * CryptUIDlgSelectStoreA (CRYPTUI.@) */ -HCERTSTORE WINAPI CryptUIDlgSelectStoreW(PCRYPTUI_SELECTSTORE_INFO_W info) +HCERTSTORE WINAPI CryptUIDlgSelectStoreA(PCRYPTUI_SELECTSTORE_INFO_A info) { - FIXME("(%p): stub\n", info); - return NULL; + CRYPTUI_SELECTSTORE_INFO_W infoW; + HCERTSTORE ret; + int len; + + TRACE("(%p)\n", info); + + if (info->dwSize != sizeof(CRYPTUI_SELECTSTORE_INFO_A)) + { + WARN("unexpected size %d\n", info->dwSize); + SetLastError(E_INVALIDARG); + return NULL; + } + memcpy(&infoW, &info, sizeof(info)); + if (info->pszTitle) + { + len = MultiByteToWideChar(CP_ACP, 0, info->pszTitle, -1, NULL, 0); + infoW.pwszTitle = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, info->pszTitle, -1, infoW.pwszTitle, + len); + } + if (info->pszText) + { + len = MultiByteToWideChar(CP_ACP, 0, info->pszText, -1, NULL, 0); + infoW.pwszText = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, info->pszText, -1, infoW.pwszText, len); + } + ret = CryptUIDlgSelectStoreW(&infoW); + HeapFree(GetProcessHeap(), 0, infoW.pwszText); + HeapFree(GetProcessHeap(), 0, infoW.pwszTitle); + return ret; } /***********************************************************************
participants (1)
-
Alexandre Julliard