The following is the layout of the object field in a descriptor's value union:
typedef struct {
OM_uint32 padding;
OM_object object;
} OM_padded_object;
The following is the layout of the value union itself:
typedef union OM_value_union {
OM_string string;
OM_boolean boolean;
OM_enumeration enumeration;
OM_integer integer;
OM_padded_object object;
} OM_value;
The following is the layout of the descriptor itself:
typedef struct OM_descriptor_struct {
OM_type type;
OM_syntax syntax;
union OM_value_union value;
} OM_descriptor;
Thus, if entry is a pointer to the DS_C_ATTRIBUTE object, then the private handle to the DS_C_ATTRIBUTE object you want next is the following:
entry\->value.object.object