次の方法で共有


IADsContainer::GetObject メソッド (iads.h)

IADsContainer::GetObject メソッドは、コンテナー内のディレクトリ オブジェクトのインターフェイスを取得します。

構文

HRESULT GetObject(
  [in]  BSTR      ClassName,
  [in]  BSTR      RelativeName,
  [out] IDispatch **ppObject
);

パラメーター

[in] ClassName

取得するオブジェクトの オブジェクト クラスの名前を指定する BSTR 。 このパラメーターが NULL の場合、プロバイダーはコンテナー内で見つかった最初の項目を返します。

[in] RelativeName

取得するオブジェクトの相対識別名を指定する BSTR

[out] ppObject

指定したオブジェクトの IDispatch インターフェイスへのポインターへのポインター。

戻り値

このメソッドは、正常な操作のS_OKを含む、標準の戻り値をサポートしています。 エラー コードの詳細については、「 ADSI エラー コード」を参照してください。

解説

LDAP プロバイダーの 場合、bstrRelativeName パラメーターには名前プレフィックス ("CN=Jeff Smith" など) を含める必要があります。 bstrRelativeName パラメーターには、"CN=Jeff Smith,OU=Sales" などの複数のレベルの名前を含めることもできます。

C++ では、GetObject が成功した場合、呼び出し元は QueryInterface メソッドを使用して目的のインターフェイスについて IDispatch インターフェイスに対してクエリを実行する必要があります。

bstrClassName パラメーターには、有効なクラス名または NULL を指定できます。 空き領域が含まれている場合など、クラス名が無効な場合、このメソッドは E_ADS_UNKNOWN_OBJECT エラーをスローします。

次のコード例では、コンテナー オブジェクトからユーザー オブジェクトを取得します。

Dim cont As IADsContainer
Dim usr As IADsUser
Set cont = GetObject("LDAP://OU=Sales,DC=Fabrikam,DC=com")
Set usr = cont.GetObject("user", "CN=jeffsmith")

このようにすると、次の記述と同じ結果が得られます。

Dim usr As IADsUser
Set usr=GetObject("LDAP://CN=jeffsmith,OU=Sales,DC=Fabrikam,DC=com")

次のコード例では、コンテナー オブジェクトからユーザー オブジェクトを取得します。

HRESULT hr = S_OK;
CoInitialize(NULL);
 
IADsContainer *pCont = NULL;
 
hr = ADsGetObject(L"LDAP://DC=windows2000,DC=mytest,DC=fabrikam,DC=com",
            IID_IADsContainer, 
            (void**) &pCont );

if(FAILED(hr))
{
    goto Cleanup;
}
 
///////////////////////////////////////////////////////////////////////
// Retrieve the child from the container.
// Be aware that in the LDAP provider you can navigate multiple levels.
///////////////////////////////////////////////////////////////////////
IDispatch *pDisp = NULL;
IADs *pADs = NULL;
hr = pCont->GetObject(CComBSTR("user"), CComBSTR("CN=Jeff Smith,OU=DSys"), &pDisp);
pCont->Release();
if(FAILED(hr))
{
    goto Cleanup;
}
 
hr = pDisp->QueryInterface(IID_IADs, (void**)&pADs);
pDisp->Release(); 
if(FAILED(hr))
{
    goto Cleanup;
}
 
// Perform an operation with pADs.
pADs->Release();
 
Cleanup:
if(pCont)
    pCont->Release();

if(pDisp)
    pDisp->Release();

if(pADs)
    pADs->Release();

CoUninitialize();

要件

   
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー iads.h
[DLL] Activeds.dll

関連項目

ADSI エラー コード

ADsGetObject

Iad

IADs::get_Class

IADs::get_Name

IADsContainer

IDispatch