# cnfGetMemberAttributeList

Returns the current value of several member attributes in a single function invocation.

#### Prototype

DWORD cnfGetMemberAttributeList ( CNFRESOURCEHD cnfresourcehd, DWORD memberid, DWORD *attributes, INT32 *values, unsigned count)

Argument | Description
cnfresourcehd | Handle returned by cnfOpenResource.
memberid | Member identifier returned by cnfJoinConference or cnfGetMemberList.
attributes | Pointer on the array of attributes to be retrieved.
values | Pointer on the returned attribute value array.
count | Number of entries in attributes and values array.

#### Return values

Return value | Description
SUCCESS |
CTAERR_BAD_ARGUMENT | attributes or values is NULL.
CTAERR_INVALID_HANDLE | cnfresourcehd is not a valid conference resource handle.
CNFERR_INVALID_ATTRIBUTE | One or more attributes in the array attributes are not valid attributes for a member.
CNFERR_INVALID_IDENTIFIER | memberid is not a valid member identifier.

#### Details

Use cnfGetMemberAttributeList to pass an array of attributes instead of calling cnfGetMemberAttribute several times to get each attribute value separately.

Refer to cnfGetMemberAttribute and Setting member attributes for more information.

#### Example

extern CNFRESOURCEHD cnfresourcehd;
typedef struct {
INT32 enable;
INT32 gain;
INT32 predelay;
} EC_CONTEXT;
DWORD getMemberECData(DWORD memberid, EC_CONTEXT *ec_context)
{
DWORD attributeList[3] = {
MEMBER_ATTR_EC_ENABLE,
MEMBER_ATTR_EC_GAIN,
MEMBER_ATTR_EC_PREDELAY,
};
INT32 values[3];
DWORD error;
error = cnfGetMemberAttibuteList( cnfresourcehd, memberid,
attributeList, values, 3);
ec_context->enable = values[0];
ec_context->gain = values[1];
ec_context->predelay = values[2];
return(error);
}