Метод 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 вызывающий объект должен запросить интерфейс IDispatch для нужного интерфейса с помощью метода QueryInterface .
Параметр bstrClassName может быть допустимым именем класса или значением NULL. Если имя класса недопустимо, в том числе если оно содержит пустое пространство, этот метод вызовет ошибку E_ADS_UNKNOWN_OBJECT .
Примеры
В следующем примере кода извлекается объект user из объекта контейнера.
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")
В следующем примере кода извлекается объект user из объекта контейнера.
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 |
Header | iads.h |
DLL | Activeds.dll |
См. также раздел
IADs::get_Class
IADs::get_Name