Partager via


Conteneur DisplaySpecifiers

Les spécificateurs d’affichage sont stockés, par paramètres régionaux, dans le conteneur DisplaySpecifiers du conteneur Configuration. Étant donné que le conteneur Configuration est répliqué sur l’ensemble de la forêt, les spécificateurs d’affichage sont propagés dans tous les domaines d’une forêt.

Le conteneur Configuration stocke le conteneur DisplaySpecifiers, qui stocke ensuite les conteneurs qui correspondent à chaque paramètre régional. Ces conteneurs de paramètres régionaux sont nommés à l’aide de la représentation hexadécimale de l’identificateur de paramètres régionaux. Par exemple, le conteneur de paramètres régionaux us/anglais est nommé 409, le conteneur des paramètres régionaux allemands est nommé 407 et le conteneur des paramètres régionaux japonais est nommé 411. Pour plus d’informations et pour obtenir la liste des identificateurs de langue possibles, consultez Constantes et chaînes d’identificateur de langue.

Chaque conteneur de paramètres régionaux stocke des objets de la classe displaySpecifier .

Pour répertorier tous les spécificateurs d’affichage pour un paramètre régional, énumérez tous les objets displaySpecifier dans le conteneur de paramètres régionaux spécifié dans le conteneur DisplaySpecifiers.

L’exemple de code suivant contient une fonction qui se lie au conteneur du spécificateur d’affichage pour les paramètres régionaux spécifiés :

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