IdmaProperties

This interface provides read-only access to DMA property values of any DMA base property type: Binary, Boolean, DateTime, Float, Identifier, Integer, Object, or String. Properties may be chosen either by their index in the object's class description list, or by their property identifier (e.g. dmaProp_RenditionsPresent). Both indices and property ids can be found from the object's meta-data. Some Property Ids are well known and can be used directly without investigation of the meta-data.

The methods used to access DMA Properties are segmented into two interfaces, the methods that allow readonly access to the properties (IdmaProperties), and the methods that allow modification of the properties (IdmaEditProperties).

When a caller requests the value of a property of type String, DateTime, or Binary, the called method allocates storage for the property value (using the DMA system allocator), and passes back a pointer to the allocated storage. It is the caller's responsibility to free that storage when it is no longer needed -- again using the DMA system allocator.

IdmaProperties::GetPropValBinaryById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValBinaryById (
pDmaId pPropertyId,
DmaBinaryValue* pBinaryValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

pBinaryValue

output

A pointer to the DmaBinaryValue structure that describes the returned value.

Description

Returns a binary property value -- a fixed number of bytes of arbitrary format. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

The caller is responsible for allocating and freeing the structure pointed to by the pBinaryValue parameter. The memory pointed to by the pBinaryValue->pbBytes field is allocated by the callee and must be freed by the caller. This field need not be pre-initialised to NULL by the caller, and must be set to NULL by the callee if any return code other than DMARC_OK is returned.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValBinaryByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValBinaryByIndex (
DmaIndex32 iIndex,
DmaBinaryValue* pBinaryValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

pBinaryValue

output

A pointer to the Property Value location. If unsuccessful, the bytes at this location will remain unchanged.

Description

Returns a binary property value -- a fixed number of bytes of arbitrary format. This is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

The caller is responsible for allocating and freeing the structure pointed to by the pBinaryValue parameter. The memory pointed to by the pBinaryValue->pbBytes field is allocated by the callee and must be freed by the caller. This field need not be pre-initialised to NULL by the caller, and must be set to NULL by the callee if any return code other than DMARC_OK is returned.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValBooleanById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValBooleanById (
pDmaId pPropertyId,
pDmaBoolean pbBooleanValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

pbBooleanValue

output

Returns the boolean value for the indicated property.

Description

Returns a boolean property value. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValBooleanByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValBooleanByIndex (
DmaIndex32 iIndex,
pDmaBoolean pbBooleanValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

pbBooleanValue

output

Returns the boolean value for the indicated property.

Description

Returns a boolean property value. This is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValDateTimeById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValDateTimeById (
pDmaId pPropertyId,
ppDmaDateTime ppDateTimeValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

ppDateTimeValue

output

A pointer to the returned DateTime, which will be set to NULL if unsuccessful.

Description

Returns a DateTime property value, which is a specialization of a DMAString. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

This method, if successful, allocates a DmaDateTime and passes ownership to the caller.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValDateTimeByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValDateTimeByIndex (
DmaIndex32 iIndex,
ppDmaDateTime ppDateTimeValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

ppDateTimeValue

output

A pointer to the returned DateTime, which will be set to NULL if unsuccessful.

Description

Returns a DateTime property value, which is a specialization of DMAString. The property of interest is located using its index, which is defined by the object's Class Description.

This method, if successful, allocates a DmaDateTime and passes ownership to the caller.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValFloat64ById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValFloat64ById (
pDmaId pPropertyId,
pDmaFloat64 pfFloatValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to a string containing the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

pfFloatValue

output

Returns the float value of the Property.

Description

Returns a 64 bit float property Value. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValFloat64ByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValFloat64ByIndex (
DmaIndex32 iIndex,
pDmaFloat64 pfFloatValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

pfFloatValue

output

Returns the float value of the Property.

Description

Returns a 64 bit float property Value. This is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_VALUE

The value given for a property or list element lies outside the permitted range or value set, or exceeds the maximum length allowed.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValIdById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValIdById (
pDmaId pPropertyId,
pDmaId pIdValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

pIdValue

output

Pointer to client-allocated storage, which the method will populate with the Id value

Description

Returns a Property Value in DMA Id form. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValIdByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValIdByIndex (
DmaIndex32 iIndex,
pDmaId pIdValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

pIdValue

output

Pointer to client-allocated storage, which the method will populate with the Id value

Description

Returns a Property Value as a DMA Id, which is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValInteger32ById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValInteger32ById (
pDmaId pPropertyId,
pDmaInteger32 plIntegerValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to a string containing the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

plIntegerValue

output

The integer value of the Property.

Description

Returns a 32 bit signed integer property value. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValInteger32ByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValInteger32ByIndex (
DmaIndex32 iIndex,
pDmaInteger32 plIntegerValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

plIntegerValue

output

The integer value of the Property.

Description

Returns a 32 bit signed integer property value. This is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValObjectById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValObjectById (
pDmaId pPropertyId,
DMA_REFIID riid,
pDmapv ppIObjectValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

riid

input

Interface Identifier for the desired interface on resulting object.

ppIObjectValue

output

An interface on the returned object, which will be set to NULL for unsuccessful return codes.

Description

Returns an object valued property. This operation will be successful only for properties that are of type "object". This allows properties to be containers, lists of property values, or complex types. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

If the returned object does not support the interface specified by riid, the operation will fail and the result code DMARC_BAD_INTERFACE will be returned. In case the operation is successful, the returned interface must be released using the method IUnknown::Release.

The returned object is obtained by reference. If there is an already-bound value for the object-valued property, an interface on that value is returned. If there is no already-bound value, and a value is defined, an appropriate DMA object is obtained, bound, and its selected interface returned. Sometimes, an existing object will be bound (i.e., for the dmaProp_This property). In other cases, a completely new object may be supplied, as for the default initial value of a never-set list-valued property. And at other times, a new scratchpad of an existing persistent object will be created and bound in conformance with the by-reference rules of the DMA object model.

An exception is made for enumeration objects -- all access to enumeration-valued properties return interfaces to a fresh enumeration object reset to the beginning of the sequence. Enumeration-valued properties always behave as if they are not already bound.

If this method is applied to a list or enumeration property, it may never return DMARC_VALUE_NOT_SET. That is, all other error conditions notwithstanding, an interface to a list or enumeration object must always be delivered, even though the list or enumeration may be empty.

Return Values

Name

Description

DMARC_BAD_INTERFACE

(E_NOINTERFACE) The requested interface is not supported by this object.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_AUTHENTICATED

The user is not authenticated.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_STALE_METADATA

The metadata in the persistent store has been changed so that it does not match the client's current copy of the metadata.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValObjectByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValObjectByIndex (
DmaIndex32 iIndex,
DMA_REFIID riid,
pDmapv ppIObjectValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

riid

input

Interface Identifier for the desired interface on resulting object.

ppIObjectValue

output

An interface on the returned object, which will be set to NULL for unsuccessful return codes.

Description

Returns an object valued property. This operation will be successful only for properties that are of type "object". This allows properties to be containers, lists of property values, or complex types. The property of interest is located using its index, which is defined by the object's Class Description.

If the returned object does not support the interface specified by riid, the operation will fail and the result code DMARC_BAD_INTERFACE will be returned. In case the operation is successful, the returned interface must be released using the method IUnknown::Release.

The returned object is obtained by reference. If there is an already-bound value for the object-valued property, an interface on that value is returned. If there is no already-bound value, and a value is defined, an appropriate DMA object is obtained, bound, and its selected interface returned. Sometimes, an existing object will be bound (i.e., for dmaProp_This). In other cases, a completely new object may be supplied, as for the default initial value of a never-set list-valued property. And at other times, a new scratchpad of an existing persistent object will be created and bound in conformance with the by-reference rules of the DMA object model.

An exception is made for enumeration objects -- all access to enumeration-valued properties return interfaces to a fresh enumeration object reset to the beginning of the sequence. Each time the property is accessed, enumeration-valued properties behave as if they are not already bound.

If this method is applied to a list or enumeration property, it may never return DMARC_VALUE_NOT_SET. That is, all other error conditions notwithstanding, an interface to a list or enumeration object must always be delivered, even though the list or enumeration may be empty.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_INTERFACE

(E_NOINTERFACE) The requested interface is not supported by this object.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_AUTHENTICATED

The user is not authenticated.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_STALE_METADATA

The metadata in the persistent store has been changed so that it does not match the client's current copy of the metadata.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValStringById

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValStringById (
pDmaId pPropertyId,
ppDmaString ppStringValue)

Parameters

Name

Mode

Description

pPropertyId

input

A pointer to the identifier of the property to be obtained. This identifier may be well-known or obtained from the meta-data.

ppStringValue

output

A pointer to the returned string, which will be set to NULL if unsuccessful.

Description

Returns a DMAString-valued property value. This is one of the basic data types used for property values. The property of interest is located using its identifier, which is either "well-known" or obtained from the meta-data.

This method, if successful, allocates a DmaString and passes ownership to the caller.

Return Values

Name

Description

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_BAD_PROPID

A property identifier is not valid.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.

IdmaProperties::GetPropValStringByIndex

Support for this method is optional.

Syntax
DmaRC IdmaProperties::GetPropValStringByIndex (
DmaIndex32 iIndex,
ppDmaString ppStringValue)

Parameters

Name

Mode

Description

iIndex

input

An index for the property that is to be obtained. This index may be obtained from the meta-data.

ppStringValue

output

A pointer to the returned string, which will be set to NULL if unsuccessful.

Description

Returns a DMAString-valued property value, which is one of the basic data types used for property values. The property of interest is located using its index, which is defined by the object's Class Description.

This method, if successful, allocates a DmaString and passes ownership to the caller.

Return Values

Name

Description

DMARC_BAD_INDEX

The index specified does not reference a valid property or list element.

DMARC_BAD_PARAMETER

(E_INVALIDARG) Invalid input parameter.

DMARC_DATATYPE_MISMATCH

The method invoked is inappropriate for the datatype of the property.

DMARC_NOT_SUPPORTED

This method is not supported in the context of this session or object.

DMARC_OK

(S_OK) Success.

DMARC_VALUE_NOT_SET

The requested property currently has no value.