Microsoft KB Archive/175618

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 11:30, 21 July 2020 by X010 (talk | contribs) (Text replacement - "&" to "&")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

PRB: Error 0x80020004 (-2147352572) When Setting a Property

Q175618



The information in this article applies to:


  • Microsoft Win32 Software Development Kit (SDK)





MORE INFORMATION

This behavior is necessary because some OLE Automation servers, as a result of their language structure, cannot differentiate between a property get or put and a method call. This specially named argument case is used to determine what is actually going on.



REFERENCES

"Inside OLE," Kraig Brocksmidt, Chapter 14, "The IDispatch interface" section, Microsoft Press, 1995



SYMPTOMS

You get the error DISP_E_PARAMNOTFOUND when you try to set a property.



CAUSE

The DISPPARAMS structure must be initialized in a special way for DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF.



RESOLUTION

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 with the following:

DISPID dispidNamed = DISPID_PROPERTYPUT;

dispparams.cNamedArgs = 1;

dispparams.rgdispidNamedArgs = &dispidNamed;



STATUS

This behavior is by design.

Additional query words: Visual C++ DISP_E_PARAMNOTFOUND "Parameter not found"

Keywords : kberrmsg kbnokeyword kbKernBase kbGrpDSKernBase
Issue type : kbprb
Technology : kbWin32SDKSearch kbAudDeveloper kbSDKSearch kbWin32sSearch


Last Reviewed: January 16, 2000
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.