Sdílet prostřednictvím


Kontejner DisplaySpecifiers

Specifikátory zobrazení jsou uloženy podle národního prostředí v kontejneru DisplaySpecifiers kontejneru Konfigurace. Protože se kontejner Konfigurace replikuje napříč celou doménovou strukturou, specifikátory zobrazení se šíří napříč všemi doménami v doménové struktuře.

Kontejner Konfigurace ukládá kontejner DisplaySpecifiers, který pak ukládá kontejnery, které odpovídají jednotlivým národním prostředím. Tyto kontejnery národního prostředí jsou pojmenovány pomocí šestnáctkové reprezentace identifikátoru národního prostředí. Například kontejner národního prostředí v USA/angličtině má název 409, kontejner německého národního prostředí má název 407 a kontejner japonského národního prostředí má název 411. Další informace a seznam možných identifikátorů jazyka naleznete v tématu Konstanty identifikátoru jazyka a řetězce.

Každý kontejner národního prostředí ukládá objekty displaySpecifier třídy.

Chcete-li vypsat všechny specifikátory zobrazení pro národní prostředí, vytvořte výčet všech displaySpecifier objekty v zadaném kontejneru národního prostředí v kontejneru DisplaySpecifiers.

Následující příklad kódu obsahuje funkci, která vytvoří vazbu na kontejner specifikátoru zobrazení pro zadané národní prostředí:

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