Microsoft KB Archive/175618

{|
 * width="100%"|

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.

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