Platform SDK: Active Directory, ADSI, and Directory Services

IADsPropertyList::ResetPropertyItem

The IADsPropertyList::ResetPropertyItem method removes the specified item from the list (that is, from the cache). You can specify the item to be removed by name (as a string) or by index (as an integer).

HRESULT ResetPropertyItem(
  VARIANT VarData       
);

Parameters

VarData
[in] Entry to be reset.

Return Values

This method supports the standard HRESULT return values, including S_OK. For other return values, see ADSI Error Codes.

Example Code [Visual Basic]

The following Visual Basic code snippet shows how ResetPropertyItem is used.

Dim propList As IADsPropertyList
 
Set propList = GetObject("LDAP://DC=Microsoft,DC=com")
 
'--- Now modify the cache using PutPropertyItem
Set propVal = New PropertyValue
'--- Property Value-----
propVal.CaseIgnoreString = "Fabrikam"
propVal.ADsType = ADSTYPE_CASE_IGNORE_STRING
 
'--- Property Entry ----
Set propEntry = New PropertyEntry
propEntry.Name = "adminDescription"
propEntry.Values = Array(propVal)
propEntry.ControlCode = ADS_PROPERTY_UPDATE
propEntry.ADsType = ADS_CASE_IGNORE_STRING
 
' --- Property List----
propList.PutPropertyItem (propEntry)
 
' Commit to the directory. Without this, the changes take place only in the cache.
propList.SetInfo 
 
propList.GetInfo
Debug.Print " Number of Properties = " & propList.PropertyCount
propList.ResetPropertyItem "adminDescription"
 
' the property count should have been reduced by one.
Debug.Print "Number of properties = " & propList.PropertyCount

Example Code [C++]

The following C++ code snippet shows the effect produced by a call to IADsPropertylist::ResetItem. See IADsPropertyList for the listing of the GetPropertyCache function. See IADsPropertyList::Next and IADsPropertyList::Item for the listing of PropertyNext and PropertyItem, respectively.

IADsPropertyList *GetPropertyCache(LPWSTR);
IADsPropertyEntry *PropertyNext(IADsPropertyList *);
IADsPropertyEntry *PropertyItem(IADsPropertyList *,LPWSTR);
 
void ResetItem(IADsPropertyList *pList,LPWSTR item)
{
    VARIANT var;
    VariantInit(&var);
    V_BSTR(&var)=SysAllocString(item);
    V_VT(&var)=VT_BSTR;
 
    pList->ResetPropertyItem(var);
    VariantClear(&var);
}
 
void TestResetItem()
{
    IADsPropertyEntry *pEntry;
    IADsPropertyList *pList;
    long count;
    BSTR bstr;
 
    pList=GetPropertyCache(L"WinNT://myComputer,computer");
 
    pList->get_PropertyCount(&count);
    printf(" Count before item reset : %d\n",count);
 
    printf("Walking up the property list before item reset: \n");
    for (int i=0; i<count; i++) {
        pEntry = PropertyNext(pList);
        pEntry->get_Name(&bstr);
        printf("   Name : %S\n",bstr);
    }
 
    pList->Reset();   // move the cursor to the beginning of the list.
 
    ResetItem(pList,L"Owner");
 
    pList->get_PropertyCount(&count);
    printf(" Count after item reset : %d\n",count);
 
    printf("Walking up the property list after item reset: \n");
 
    for (i=0; i<count; i++) {
        pEntry = PropertyNext(pList);
        pEntry->get_Name(&bstr);
        printf("   Name : %S\n",bstr);
    }
 
    pEntry->Release();
    pList->Release();
    SysFreeString(bstr);
}

Requirements

  Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with DSClient).
  Windows 95/98: Requires Windows 95 or later (with DSClient).
  Header: Declared in Iads.h.

See Also

ADSI Error Codes, IADsPropertyList, IADsPropertyList::Item, IADsPropertyList::Next, IADsPropertyList Property Methods