Share via


IADsAccessControlList::get__NewEnum 메서드(iads.h)

IADsAccessControlList::get__NewEnum 메서드는 ACL이 ACE를 열거할 열거자 개체를 가져오는 데 사용됩니다.

구문

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

매개 변수

[out] retval

ACL의 열거자 개체에서 IEnumVARIANT 인터페이스를 검색하는 데 사용되는 IUnknown 인터페이스에 대한 포인터입니다.

반환 값

이 메서드는 S_OK E_FAIL 포함한 표준 반환 값을 반환합니다. 다른 반환 값에 대한 자세한 내용은 ADSI 오류 코드를 참조하세요.

설명

get__NewEnum 두 개의 밑줄이 있습니다.

예제

다음 코드 예제에서는 For Each 루프 실행에서 get__NewEnum 메서드를 암시적으로 호출합니다.

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

다음 코드 예제에서는 IADsAccessControlList::get__NewEnum 사용하여 ACE를 열거하는 방법을 보여 줍니다.

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;
}

요구 사항

   
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 iads.h
DLL Activeds.dll

참고 항목

IADsAccessControlEntry

IADsAccessControlList

IADsSecurityDescriptor

IEnumVARIANT