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 |