다음을 통해 공유


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

IADsCollection::get__NewEnum 메서드는 이 ADSI 컬렉션 개체에 대해 IEnumVARIANT를 구현하는 종속 열거자 개체를 가져옵니다. 함수 이름(get__NewEnum)에 두 개의 밑줄 문자가 있습니다.

구문

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

매개 변수

[out] ppEnumerator

이 컬렉션에 대한 열거자 개체의 IUnknown 인터페이스에 대한 포인터에 대한 포인터입니다.

반환 값

이 메서드는 S_OK, E_FAIL또는E_NOTIMPL 포함한 표준 반환 값을 지원합니다. 자세한 내용 및 기타 반환 값은 ADSI 오류 코드를 참조하세요.

설명

서버가 페이징 검색을 지원하고 클라이언트가 서버에 허용되는 최대 검색 결과보다 큰 페이지 제한을 지정한 경우 IADsCollection::get__NewEnum 메서드는 다음과 같은 방법으로 오류를 반환합니다.

  • 서버가 결과 없이 오류를 반환하는 경우 함수는 오류만 반환합니다.
  • 서버에서 오류 유의 여부에 관계없이 부분 결과를 반환하는 경우(예: 서버에서 허용되는 최대 검색 결과) 함수는 서버의 부분 결과를 사용자에게 반환합니다.
  • 서버에서 오류가 있거나 없는 모든 결과(예: 각 페이지의 최대 검색 결과 및 여러 페이지를 통한 모든 결과)를 반환하는 경우 함수는 서버의 모든 결과를 사용자에게 반환합니다.

예제

For Each... 에서... 다음 Visual Basic 코드 예제의 다음 문은 get__NewEnum 메서드를 암시적으로 호출합니다.

Dim fso As IADsFileServiceOperations 
On Error GoTo Cleanup

Set fso = GetObject("WinNT://myComputer/Fabrikam01") 
 
Dim coll As IADsCollection
Set coll = fso.Sessions
 
' The following statement invokes IADsCollection::get__NewEnum.
For Each session In coll 
   MsgBox "Session name: " & session.Name
Next session

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

다음 C++ 코드 예제에서는 IADsCollection::get__NewEnum 사용하여 활성 파일 서비스 세션을 열거하는 방법을 보여 줍니다.

HRESULT EnumCollection(IADsCollection *);

HRESULT GetACollectionOfSessions()
{
    LPWSTR adspath = L"WinNT://myComputer/LanmanServer";
    HRESULT hr = S_OK;
    IADsCollection *pColl = NULL;

    // Bind to file service operations.
    IADsFileServiceOperations *pFso = NULL;
    hr = ADsGetObject(adspath,
                      IID_IADsFileServiceOperations,
                      (void**)&pFso);
    if(FAILED(hr)) {goto Cleanup;}

    // Get the pointer to the collection.
    hr = pFso->Sessions(&pColl);
    if(FAILED(hr)) {goto Cleanup;}

    hr = EnumCollection(pColl);

Cleanup:
    if(pColl) pColl->Release();
    if(pFso) pFso->Release();

    return hr;
}

HRESULT EnumCollection(IADsCollection *pColl)
{
    IUnknown *pUnk=NULL;
    HRESULT hr = S_OK;
    // Get the Enumerator object on the collection object.
    hr = pColl->get__NewEnum(&pUnk);
    if(FAILED(hr)) {goto Cleanup;}

    IEnumVARIANT *pEnum;
    hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
    if(FAILED(hr)) {goto Cleanup;}

    // Enumerate the collection.
    BSTR bstr = NULL;
    VARIANT var;
    IADs *pADs = NULL;
    ULONG lFetch;
    IDispatch *pDisp = NULL;

    VariantInit(&var);
    hr = pEnum->Next(1, &var, &lFetch);
    while(hr == S_OK)
    {
        if (lFetch == 1)    
        {
             pDisp = V_DISPATCH(&var);
             pDisp->QueryInterface(IID_IADs, (void**)&pADs);
             pADs->get_Name(&bstr);
             printf("Session name: %S\n",bstr);
             SysFreeString(bstr);
             pADs->Release();
        }
        VariantClear(&var);
        pDisp->Release();
        pDisp = NULL;
        hr = pEnum->Next(1, &var, &lFetch);
    };
    

Cleanup:
    if(pDisp) pDisp->Release();
    if(pUnk) pUnk->Release();
    if(pColl) pColl->Release();
    if(pEnum) pEnum->Release();
    return hr;
}

요구 사항

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

추가 정보

ADSI 오류 코드

IADsCollection

IEnumVARIANT

IUnknown