Condividi tramite


Contenitore DisplaySpecifiers

Gli identificatori di visualizzazione vengono archiviati in base alle impostazioni locali nel contenitore DisplaySpecifiers del contenitore Configuration. Poiché il contenitore Di configurazione viene replicato nell'intera foresta, gli identificatori di visualizzazione vengono propagati in tutti i domini di una foresta.

Il contenitore Configuration archivia il contenitore DisplaySpecifiers, che archivia quindi i contenitori che corrispondono a ogni impostazione locale. Questi contenitori di impostazioni locali vengono denominati usando la rappresentazione esadecimale dell'identificatore delle impostazioni locali. Ad esempio, il contenitore delle impostazioni locali usa/inglese è denominato 409, il contenitore delle impostazioni locali tedesche è denominato 407 e il contenitore delle impostazioni locali giapponese è denominato 411. Per altre informazioni e un elenco di possibili identificatori di lingua, vedere Costanti e stringhe dell'identificatore di lingua.

Ogni contenitore delle impostazioni locali archivia gli oggetti della classe displaySpecifier.

Per elencare tutti gli identificatori di visualizzazione per le impostazioni locali, enumerare tutti gli oggetti displaySpecifier nel contenitore delle impostazioni locali specificato all'interno del contenitore DisplaySpecifiers.

L'esempio di codice seguente contiene una funzione che viene associata al contenitore dell'identificatore di visualizzazione per le impostazioni locali specificate:

/**********
This function returns a pointer to the display specifier container 
for the specified locale.

If locale is NULL, use default system locale and then return the 
locale in the locale parameter.
***********/
HRESULT BindToDisplaySpecifiersContainerByLocale(
    LCID *locale,
    IADs **ppDispSpecCont)
{
HRESULT hr = E_FAIL;
 
if ((!ppDispSpecCont)||(!locale))
    return E_POINTER;
 
// If no locale is specified, use the default system locale.
if (!(*locale))
{
    *locale = GetSystemDefaultLCID();
    if (!(*locale))
        return E_FAIL;
}
 
// Be sure that the locale is valid.
if (!IsValidLocale(*locale, LCID_SUPPORTED))
    return E_INVALIDARG;
 
LPOLESTR szPath = new OLECHAR[MAX_PATH*2];
IADs *pObj = NULL;
VARIANT var;
 
hr = ADsOpenObject(L"LDAP://rootDSE",
                     NULL,
                     NULL,
                     ADS_SECURE_AUTHENTICATION,
                     IID_IADs,
                     (void**)&pObj);
 
if (SUCCEEDED(hr))
{
    // Get the DN to the configuration container.
    hr = pObj->Get(CComBSTR("configurationNamingContext"), &var);
    if (SUCCEEDED(hr))
    {
        // Build the string to bind to the container for the
        // specified locale in the DisplaySpecifiers container.
        swprintf_s(
            szPath, 
            L"LDAP://cn=%x,cn=DisplaySpecifiers,%s", 
            *locale, 
            var.bstrVal);

        // Bind to the container.
        *ppDispSpecCont = NULL;
        hr = ADsOpenObject(szPath,
                     NULL,
                     NULL,
                     ADS_SECURE_AUTHENTICATION,
                     IID_IADs,
                     (void**)ppDispSpecCont);
 
        if(FAILED(hr))
        {
            if ((*ppDispSpecCont))
            {
                (*ppDispSpecCont)->Release();
                (*ppDispSpecCont) = NULL;
            }
        }
    }
}
 
// Cleanup.
VariantClear(&var);
if (pObj)
    pObj->Release();
 
return hr;
}