次の方法で共有


IADsCollection::get__NewEnum メソッド (iads.h)

IADsCollection::get__NewEnum メソッドは、この ADSI コレクション オブジェクトに IEnumVARIANT を実装する依存列挙子オブジェクトを取得します。 関数名には 2 つのアンダースコア文字 (get__NewEnum) があることに注意してください。

構文

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

パラメーター

[out] ppEnumerator

このコレクションの列挙子オブジェクトの IUnknown インターフェイスへのポインターへのポインター。

戻り値

このメソッドは、S_OK、E_FAILまたはE_NOTIMPLを含む標準の戻り値サポートします。 詳細およびその他の戻り値については、「 ADSI エラー コード」を参照してください。

注釈

サーバーがページ検索をサポートし、クライアントがサーバーで許可されている検索結果の最大数を超えるページ制限を指定した場合、 IADsCollection::get__NewEnum メソッドは次の方法でエラーを返します。

  • サーバーから結果のないエラーが返された場合、関数はエラーのみを返します。
  • サーバーで許可されている検索結果の最大数など、サーバーがエラーの有無にかかわらず部分的な結果を返す場合、関数はサーバーからユーザーに部分的な結果を返します。
  • サーバーがエラーの有無にかかわらずすべての結果を返す場合 (たとえば、各ページの検索結果の最大数と、複数のページを通じてのすべての結果)、関数はサーバーからユーザーにすべての結果を返します。

For Each...In...次の 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