Share via


IPropertyBag::Read (Compact 2013)

3/26/2014

This method asks the property bag to read the named property into a caller-initialized VARIANT.

Syntax

HRESULT Read( 
  LPCOLESTR pszPropName, 
  VARIANT* pVar, 
  IErrorlog* pErrorLog 
);

Parameters

  • pszPropName
    [in] Address of the name of the property to read. This cannot be NULL.
  • pVar
    [in, out] Address of the caller-initialized VARIANT that is to receive the property value on output.

    The function must set both type and value members in the VARIANT before returning.

    If the caller initialized the pVar->vt member on entry, the property bag should attempt to change its corresponding value into this type.

    If the caller sets pVar->vt to VT_EMPTY, the property bag can use whatever type is convenient.

  • pErrorLog
    [in, out] Address of the caller's error log in which the property bag stores any errors that occur during reads.

    This can be NULL. If it is NULL, the caller does not receive errors.

Return Value

The following table shows the return values.

Value

Description

S_OK

The property was read successfully. The caller becomes responsible for any allocations that are contained in the VARIANT in pVar.

E_POINTER

The address in pszPropName is not valid, such as NULL.

E_INVALIDARG

The property named with pszPropName does not exist in the property bag.

E_FAIL

The property bag was unable to read the specified property. For example, the caller specified a data type to which the property bag could not coerce the known value.

If the caller supplied an error log, a more descriptive error was sent there.

Remarks

The Read method asks the property bag to read the property named in pszPropName into the caller-initialized VARIANT in pVar.

Errors that occur are logged in the error log pointed to by pErrorLog. When pVar->vt specifies another object pointer, VT_UNKNOWN, the property bag is responsible for creating and initializing the object described by pszPropName.

E_NOTIMPL is not a valid return code because any object implementing this interface must support the entire functionality of the interface.

Requirements

Header

ocidl.h,
ocidl.idl

Library

ole32.lib,
uuid.lib

See Also

Reference

IPropertyBag
IPropertyBag::Write