Directory Services |
The property methods of the IADsPropertyValue interface provide access to the properties described in the following table. For more information, see Interface Property Methods.
Property | Description |
---|---|
ADsType
[Visual Basic] [C++] |
The data type of the value of the property, taken from the ADSTYPEENUM enumeration, of the value property. |
DNString
[Visual Basic] [C++] |
String that identifies the distinguished name (path) of a directory service value object. |
CaseExactString
[Visual Basic] [C++] |
String to be interpreted. Case-sensitive. |
CaseIgnoreString
[Visual Basic] [C++] |
String to be interpreted. Case insensitive. |
PrintableString
[Visual Basic] [C++] |
Display or print string. |
NumericString
[Visual Basic] [C++] |
Text to be interpreted. Numeric type. |
Boolean
[Visual Basic] [C++] |
Boolean value. |
Integer
[Visual Basic] [C++] |
Integer value. |
OctetString
[Visual Basic] [C++] |
Variant array of one-byte characters. |
SecurityDescriptor
[Visual Basic] [C++] |
Pointer to the IDispatch interface of the object implementing IADsSecurityDescriptor for this value. |
LargeInteger
[Visual Basic] [C++] |
Pointer to the IDispatch interface of the object implementing IADsLargeInteger for this value. |
UTCTime
[Visual Basic] [C++] |
A date of the VT_DATE type expressed in Coordinated Universal Time (UTC) format. |
The IADsPropertyValue properties will only set or retrieve a property value of the specified type. For example, calling the CaseIgnoreString property (or get_CaseIgnoreString method) on a property of type ADSTYPE_DN_STRING (like the distinguishedName property) will result in an error. The CaseIgnoreString property (or get_CaseIgnoreString method will only work on properties of type ADS_CASE_IGNORE_STRING.
The following code example shows how to retrieve a property from the property list.
Dim propList As IADsPropertyList Dim propEntry As IADsPropertyEntry Dim propVal As IADsPropertyValue On Error GoTo Cleanup ' Retrieve the property list. Set propList = GetObject("LDAP://dc01/DC=Fabrikam,DC=com") propList.GetInfo ' Retrieve a property entry. If you are certain of the property type, ' replace ADSTYPE_UNKNOWN with the actual property type Set propEntry = propList.GetPropertyItem("description", ADSTYPE_UNKNOWN) ' Print the property entry values. For Each v In propEntry.Values Set propVal = v Select Case propVal.ADsType Case ADSTYPE_CASE_EXACT_STRING Debug.Print propVal.CaseExactString Case ADSTYPE_CASE_IGNORE_STRING Debug.Print propVal.CaseIgnoreString Case Else Debug.Print "Unable to handle a property of type: " & propVal.ADsType End Select Next Cleanup: If (Err.Number<>0) Then Debug.Print "An error has occurred. " & Err.Number End If Set propList = Nothing Set propEntry = Nothing Set propVal = Nothing
The following C++ code shows how to use IADsPropertyValue::get_CaseIgnoreString to retrieve the value of the description property from a property list.
#include <activeds.h> #include <stdio.h> IADsPropertyList *pList = NULL; IADsPropertyEntry *pEntry = NULL; IADsPropertyValue *pVal = NULL; IADs *pObj = NULL; VARIANT var, varItem; BSTR valStr; IEnumVARIANT *pEnum = NULL; LONG lstart = 0; LONG lend = 0; LONG lADsType = ADSTYPE_UNKNOWN; VariantInit(&var); VariantInit(&varItem); // Bind to the directory object. HRESULT hr = ADsGetObject(L"LDAP://dc01/DC=Fabrikam,DC=com", IID_IADsPropertyList, (void**)&pList); if(FAILED(hr)){goto Cleanup;} // Initialize the property cache. hr = pList->QueryInterface(IID_IADs,(void**)&pObj); if(FAILED(hr)){goto Cleanup;} pObj->GetInfo(); pObj->Release(); // Retrieve the property entry. hr = pList->GetPropertyItem(CComBSTR("description"), ADSTYPE_CASE_IGNORE_STRING, &var); pList->Release(); if(FAILED(hr)){goto Cleanup;} hr = V_DISPATCH(&var)->QueryInterface(IID_IADsPropertyEntry, (void**)&pEntry); VariantClear(&var); if(FAILED(hr)){goto Cleanup;} // Retrieve the value array of the property entry. hr = pEntry->get_Values(&var); if(FAILED(hr)){goto Cleanup;} SAFEARRAY *sa = V_ARRAY( &var ); // Retrieve the lower and upper bound. Iterate and print the values. hr = SafeArrayGetLBound( sa, 1, &lstart ); hr = SafeArrayGetUBound( sa, 1, &lend ); printf(" Property value(s) = "); for ( long idx=lstart; idx < lend+1; idx++ ) { hr = SafeArrayGetElement( sa, &idx, &varItem ); hr = V_DISPATCH(&varItem)->QueryInterface(IID_IADsPropertyValue, (void**)&pVal); if(FAILED(hr)){goto Cleanup;} pVal->get_ADsType(&lADsType); switch(lADsType) { case ADSTYPE_CASE_IGNORE_STRING: { hr = pVal->get_CaseIgnoreString(&valStr); break; } case ADSTYPE_CASE_EXACT_STRING: { hr = pVal->get_CaseExactString(&valStr); break; } default: { valStr = SysAllocString(L"Unable to handle a property of this type"); break; } } if(FAILED(hr)){goto Cleanup;} printf(" %S ", valStr); SysFreeString(valStr); VariantClear(&varItem); } printf("\n"); Cleanup: if(pList) pList = NULL; if(pEntry) pEntry = NULL; if(pVal) pVal = NULL; if(pObj) pObj = NULL; if(pEnum) pEnum = NULL; SysFreeString(valStr); VariantClear(&varItem); VariantClear(&var);
Client: Included in Windows XP and
Windows 2000 Professional.
Server: Included in Windows Server 2003 and
Windows 2000 Server.
Redistributable: Requires Active Directory Client Extension
on Windows NT 4.0 SP6a and Windows 95/98/Me.
Header: Declared in Iads.h.
ADSTYPEENUM, IADsPropertyEntry, IADsPropertyList, IADsPropertyValue2, IADsSecurityDescriptor, IDispatch