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 fields in the VARIANT before returning. If the caller initialized the pVar->vt field 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; in that case, the caller does not receive errors.
Return Value
Returns one of the following values:
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.
See Also