The CERT_NAME_VALUE structure is a CERT_RDN_ATTR without the object identifier. The interpretation of the Value data member depends on the dwValueType.
typedef struct _CERT_NAME_VALUE {
DWORD dwValueType;
CERT_RDN_VALUE_BLOB Value;
} CERT_NAME_VALUE, *PCERT_NAME_VALUE;
For all CERT_RDN types, Value.cbData is always the number of bytes, not necessarily the number of elements in the string. For instance, CERT_RDN_UNIVERSAL_STRING is an array of ints (cbData == intCnt * 4) and CERT_RDN_BMP_STRING is an array of unsigned shorts (cbData == ushortCnt * 2). The dwValueTypes are defined in Wincrypt.h and are shown in the CERT_RDN_ATTR section.