Compartir a través de


Método IADsAccessControlList::get__NewEnum (iads.h)

El método IADsAccessControlList::get__NewEnum se usa para obtener un objeto enumerador para que la ACL enumere ACL.

Sintaxis

HRESULT get__NewEnum(
  [out] IUnknown **retval
);

Parámetros

[out] retval

Puntero al puntero a la interfaz de IUnknown usada para recuperar interfaz IEnumVARIANT en un objeto enumerador para la ACL.

Valor devuelto

Este método devuelve los valores devueltos estándar, incluidos S_OK y E_FAIL. Para obtener más información sobre otros valores devueltos, consulta códigos de error ADSI.

Observaciones

Tenga en cuenta que hay dos caracteres de subrayado en get__NewEnum.

Ejemplos

En el ejemplo de código siguiente se realiza una llamada implícita al método get__NewEnum en la ejecución del bucle For Each.

Dim Dacl As IADsAccessControlList
Dim ace As IADsAccessControlEntry

On Error GoTo Cleanup

' Get DACL. Code omitted.

' Display the trustees for each of the ACEs
For Each ace In Dacl 
    Debug.Print ace.trustee
Next ace

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set Dacl = Nothing
    Set ace = Nothing

En el ejemplo de código siguiente se muestra cómo enumerar las ACE mediante IADsAccessControlList::get__NewEnum.

HRESULT ListTrustees(IADsAccessControlList *pACL)
{
    IEnumVARIANT *pEnum = NULL;
    LPUNKNOWN     pUnk = NULL;
    ULONG  lFetch = 0;
    BSTR    bstr = NULL;
    IADsAccessControlEntry *pACE = NULL;
    IDispatch *pDisp = NULL;
    VARIANT var;
    HRESULT hr = S_OK;
    
    VariantInit(&var);
     
    hr = pACL->get__NewEnum(&pUnk);
    if (FAILED(hr)){goto Cleanup;}
    
    hr = pUnk->QueryInterface( IID_IEnumVARIANT, (void**) &pEnum );
    pUnk->Release();
    if (FAILED(hr)){goto Cleanup;}
     
    hr = pEnum->Next( 1, &var, &lFetch );
    if (FAILED(hr)){goto Cleanup;}
     
    while( hr == S_OK )
    {
        if ( lFetch == 1 )
        {
            if ( VT_DISPATCH != V_VT(&var) )
            {
                goto Cleanup;
            }
            pDisp = V_DISPATCH(&var);
            /////////////////////////
            // Get the individual ACE
            /////////////////////////
            hr = pDisp->QueryInterface( IID_IADsAccessControlEntry,(void**)&pACE ); 
            if ( SUCCEEDED(hr) )
            {
                pACE->get_Trustee(&bstr);
                printf("\n %S:\n", bstr);
                //ACE manipulation here
                SysFreeString(bstr);
                pACE->Release();
            }
            pACE->Release();
            pDisp->Release();
            VariantClear(&var);
        }
        hr = pEnum->Next( 1, &var, &lFetch );
    }
    Cleanup:        
        if(pEnum) pEnum->Release();
        if(pUnk) pUnk->Release();
        if(bstr) SysFreeString(bstr);
        if(pACE) pACE->Release();
        VariantClear(&var);
        return hr;
}

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista
servidor mínimo admitido Windows Server 2008
de la plataforma de destino de Windows
encabezado de iads.h
DLL de Activeds.dll

Consulte también

IADsAccessControlEntry

IADsAccessControlList

IADsSecurityDescriptor

IEnumVARIANT