On Thursday, 27 April 2017 at 07:51:26 UTC, John Chapman wrote:
On Wednesday, 26 April 2017 at 23:04:53 UTC, Nierjerson wrote:
On Wednesday, 26 April 2017 at 15:30:37 UTC, John Chapman wrote:
On Tuesday, 25 April 2017 at 18:39:56 UTC, Nierjerson wrote:
[...]

When you use DISPATCH_PROPERTYPUT you need to set cNamedArgs and rgdispidNamedArgs like so:

  int dispidNamed = DISPID_PROPERTYPUT;
  params.cNamedArgs = 1;
  params.rgdispidNamedArgs = &dispidNamed;

You should also call AddRef on any COM objects you add to your paramVars array.


Did you try this? I tried and same issue. Are you sure the above is required? I'm not using any "named" args so not sure why it should matter?

From the documentation (https://msdn.microsoft.com/en-us/library/windows/desktop/ms221479(v=vs.85).aspx):

"When you use IDispatch::Invoke() with DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF, you have to specially initialize the cNamedArgs and rgdispidNamedArgs elements of your DISPPARAMS structure"

Thought it might help.

Ok, thanks. I will try again, Maybe I did something wrong. It seems though that it isn't necessary, at least in my specific test case since the same behavior was seen(although it might have been a future bug).

I think the main issue though, is that I really don't know what is going on when I invoke the PS function. It seems to call the server method that takes the interface and then the server does it's "magic"(which is calling my QueryInterface) but how the implemented QueryInterface is suppose to respond is beyond me... I've tried some based stuff but nothing seem to work. The good news is that it is doing something(calling QueryInterface) which means that the server is at work.

Any more ideas? I think the issue currently is is the QueryInterface(it is simply not doing what it is suppose to). I'll probably have to look at some other implementations to see what is going on.


Reply via email to