Método IADsPropertyList::ResetPropertyItem (iads.h)
El método IADsPropertyList::ResetPropertyItem quita el elemento especificado de la lista; es decir, desde la memoria caché. Puede especificar el elemento que se va a quitar por nombre (como una cadena) o por índice (como un entero).
Sintaxis
HRESULT ResetPropertyItem(
[in] VARIANT varEntry
);
Parámetros
[in] varEntry
Entrada que se va a restablecer.
Valor devuelto
Este método admite los valores devueltos HRESULT estándar, incluidos S_OK. Para obtener más información y otros valores devueltos, vea Códigos de error adsi.
Comentarios
ResetPropertyItem solo afecta al contenido de la memoria caché y no afecta a las propiedades del objeto real del directorio; que llama a SetInfo después de llamar a ResetPropertyItem no elimina las propiedades del objeto de directorio.
Ejemplos
En el ejemplo de código siguiente se muestra cómo implementar ResetPropertyItem.
Dim propList As IADsPropertyList
On Error GoTo Cleanup
Set propList = GetObject("LDAP://DC=Fabrikam,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
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set propList = Nothing
Set propVal = Nothing
Set propEntry = Nothing
En el ejemplo de código siguiente se muestra el efecto generado por una llamada a IADsPropertyList::ResetPropertyItem. Para obtener más información y la lista de la función GetPropertyCache , consulte IADsPropertyList. Para obtener más información y la lista de las funciones GetNextEntry y PropertyItem , vea IADsPropertyList::Next e IADsPropertyList::Item respectivamente.
IADsPropertyList *GetPropertyCache(LPWSTR);
IADsPropertyEntry *GetNextEntry(IADsPropertyList *);
IADsPropertyEntry *PropertyItem(IADsPropertyList *,LPWSTR);
void ResetItem(IADsPropertyList *pList, LPWSTR item)
{
VARIANT var;
VariantInit(&var);
if(!pList)
{
item = NULL;
return;
}
V_BSTR(&var)=SysAllocString(item);
V_VT(&var)=VT_BSTR;
pList->ResetPropertyItem(var);
VariantClear(&var);
}
void TestResetItem()
{
IADsPropertyEntry *pEntry = NULL;
IADsPropertyList *pList = NULL;
long count;
BSTR bstr;
HRESULT hr;
pList = GetPropertyCache(L"WinNT://myComputer,computer");
hr = pList->get_PropertyCount(&count);
if(SUCCEEDED(hr))
{
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 = GetNextEntry(pList);
hr = pEntry->get_Name(&bstr);
if(SUCCEEDED(hr))
{
printf(" Name : %S\n",bstr);
SysFreeString(bstr);
}
}
pList->Reset(); // Move the cursor to the beginning of the list.
ResetItem(pList, L"Owner");
hr = pList->get_PropertyCount(&count);
if(SUCCEEDED(hr))
{
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 = GetNextEntry(pList);
hr = pEntry->get_Name(&bstr);
if(SUCCEEDED(hr))
{
printf(" Name : %S\n",bstr);
SysFreeString(bstr);
}
}
pEntry->Release();
pList->Release();
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | iads.h |
Archivo DLL | Activeds.dll |