IaDsObjectOptions (interfaz)
La interfaz IADsObjectOptions permite el acceso directo a establecer y recuperar opciones específicas del proveedor.
Una de las opciones de objeto de Active Directory es devolver el nombre de host de un servidor. En el ejemplo de código siguiente se usa la interfaz para recuperar el nombre de host del servidor de catálogo global.
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);
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de