Jacek Caban : shlwapi: Added SHPackDispParamsV implementation.
Alexandre Julliard
julliard at winehq.org
Mon Nov 12 06:27:27 CST 2007
Module: wine
Branch: master
Commit: 54292f7da62fb1a6718772fda32305468c86fed1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=54292f7da62fb1a6718772fda32305468c86fed1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Nov 12 01:24:30 2007 +0100
shlwapi: Added SHPackDispParamsV implementation.
---
dlls/shlwapi/ordinal.c | 47 ++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index 7afd9b3..15b35a9 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -2800,10 +2800,51 @@ HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEM
*
* _SHPackDispParamsV
*/
-HRESULT WINAPI SHPackDispParamsV(LPVOID w, LPVOID x, LPVOID y, LPVOID z)
+HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, va_list valist)
{
- FIXME("%p %p %p %p\n",w,x,y,z);
- return E_FAIL;
+ VARIANTARG *iter;
+
+ TRACE("(%p %p %u ...)\n", params, args, cnt);
+
+ params->rgvarg = args;
+ params->rgdispidNamedArgs = NULL;
+ params->cArgs = cnt;
+ params->cNamedArgs = 0;
+
+ iter = args+cnt;
+
+ while(iter-- > args) {
+ V_VT(iter) = va_arg(valist, enum VARENUM);
+
+ TRACE("vt=%d\n", V_VT(iter));
+
+ if(V_VT(iter) & VT_BYREF) {
+ V_BYREF(iter) = va_arg(valist, LPVOID);
+ } else {
+ switch(V_VT(iter)) {
+ case VT_I4:
+ V_I4(iter) = va_arg(valist, LONG);
+ break;
+ case VT_BSTR:
+ V_BSTR(iter) = va_arg(valist, BSTR);
+ break;
+ case VT_DISPATCH:
+ V_DISPATCH(iter) = va_arg(valist, IDispatch*);
+ break;
+ case VT_BOOL:
+ V_BOOL(iter) = va_arg(valist, int);
+ break;
+ case VT_UNKNOWN:
+ V_UNKNOWN(iter) = va_arg(valist, IUnknown*);
+ break;
+ default:
+ V_VT(iter) = VT_I4;
+ V_I4(iter) = va_arg(valist, LONG);
+ }
+ }
+ }
+
+ return S_OK;
}
/*************************************************************************
More information about the wine-cvs
mailing list