IADsObjectOptions Interface
L’interface IADsObjectOptions permet d’accéder directement à la définition et à la récupération d’options spécifiques au fournisseur.
L’une des options de l’objet Active Directory consiste à retourner le nom d’hôte d’un serveur. L’exemple de code suivant utilise l’interface pour récupérer le nom d’hôte du serveur de catalogue 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);
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour