Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

IADsObjectOptions Interface

The IADsObjectOptions interface enables direct access to setting and retrieving provider-specific options.

One of the Active Directory object options is to return the host name of a server. The following code example uses the interface to retrieve the host name of the global catalog server.

HRESULT GetGCServerName(VARIANT *vGCServer) 
{
 HRESULT hr = S_OK
 HRESULT hre = S_OK;
 IADsContainer *pContainer = NULL;
 IUnknown *pUnk = NULL;
 IEnumVARIANT *pEnum = NULL;
 IDispatch *pDisp = NULL;
 IADsObjectOptions *pOpt = NULL;
 VARIANT var;
 ULONG lFetch = 0;

 VariantInit(&var);
 
 // Bind to the global catalog using a serverless bind.
 hr = ADsOpenObject(L"GC:", NULL, NULL,
 ADS_SECURE_AUTHENTICATION,
 IID_IADsContainer, (void**) &pContainer );
 if (FAILED(hr))
 return (hr);
 
 hr = pContainer->get__NewEnum(&pUnk);
 if (SUCCEEDED(hr))
 {
 hr = pUnk->QueryInterface(IID_IEnumVARIANT, (void**) &pEnum);
 if (SUCCEEDED(hr))
 {
 // Enumerate.
 hr = pEnum->Next(1, &var, &lFetch);
 if (SUCCEEDED(hr))
 {
 while (SUCCEEDED(hr))
 {
 if (lFetch == 1)
 {
 pDisp = V_DISPATCH(&var);
 hre = pDisp->QueryInterface(
 IID_IADsObjectOptions,
 (void**)&pOpt);
 if (pDisp)
 pDisp->Release();
 }
 VariantClear(&var);
 hr = pEnum->Next(1, &var, &lFetch);
 }
 // S_FALSE indicates that the row was read properly.
 if (hr == S_FALSE)
 hr = hre;
 }
 
 if (SUCCEEDED(hr))
 {
 // There is a valid pOpt, so request the server name.
 VariantInit(vGCServer);
 hr = pOpt->GetOption(ADS_OPTION_SERVERNAME,vGCServer);
 }
 }
 }
 
// Cleanup.
 VariantClear(&var);
 if (pOpt)
 pOpt->Release();
 if (pEnum)
 pEnum->Release();
 if (pUnk)
 pUnk->Release();
 if (pContainer)
 pContainer->Release();
 return (hr);
}

Feedback

Was this page helpful?

Additional resources