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