I think you need to reference the returned data differently. At least in the sample, the return value appears to be an array of items. Also, the DN is referenced as a ".DNString".

from MSDN:
Code:
// Get the data for this column
wprintf(L"%s\n",col.pszAttrName);
switch (col.dwADsType)
{
   case ADSTYPE_DN_STRING:
     for (x = 0; x< col.dwNumValues; x++)
     {
        wprintf(L"  %s\r\n",col.pADsValues[x].DNString);
     }
     break;
   case ADSTYPE_CASE_EXACT_STRING:
   case ADSTYPE_CASE_IGNORE_STRING:
   case ADSTYPE_PRINTABLE_STRING:
   case ADSTYPE_NUMERIC_STRING:
   case ADSTYPE_TYPEDNAME:
   case ADSTYPE_FAXNUMBER:
   case ADSTYPE_PATH:
   case ADSTYPE_OBJECT_CLASS:
     for (x = 0; x< col.dwNumValues; x++)
     {
        wprintf(L"  %s\r\n",col.pADsValues[x].CaseIgnoreString);
     }
     break;

     // rest of code here...........
}
HTH