Partilhar via


Recipiente DisplaySpecifiers

Os especificadores de exibição são armazenados, por localidade, no contêiner DisplaySpecifiers do contêiner Configuration. Como o contêiner Configuração é replicado em toda a floresta, os especificadores de exibição são propagados em todos os domínios de uma floresta.

O contêiner Configuration armazena o contêiner DisplaySpecifiers, que armazena contêineres que correspondem a cada localidade. Esses contêineres de localidade são nomeados usando a representação hexadecimal do identificador de localidade. Por exemplo, o contêiner de localidade dos EUA/Inglês é chamado 409, o contêiner da localidade alemã é chamado 407 e o contêiner da localidade japonesa é chamado 411. Para obter mais informações e uma lista de possíveis identificadores de idioma, consulte Language Identifier Constants and Strings.

Cada contêiner de localidade armazena objetos da classedisplaySpecifier.

Para listar todos os especificadores de exibição para uma localidade, enumere todos os objetos dedisplaySpecifierno contêiner de localidade especificado dentro do contêiner DisplaySpecifiers.

O exemplo de código a seguir contém uma função que se liga ao contêiner especificador de exibição para a localidade especificada:

/**********
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;
}