DisplaySpecifiers Container
Anzeigebezeichner werden nach Gebietsschema im Container DisplaySpecifiers des Konfigurationscontainers gespeichert. Da der Konfigurationscontainer über die gesamte Gesamtstruktur repliziert wird, werden Anzeigebezeichner auf alle Domänen in einer Gesamtstruktur verteilt.
Der Konfigurationscontainer speichert den DisplaySpecifiers-Container, in dem dann Container gespeichert werden, die den einzelnen Gebietsschemas entsprechen. Diese Gebietsschemacontainer werden mit der hexadezimalen Darstellung des Gebietsschemabezeichners benannt. Beispielsweise heißt der US-/englische Gebietsschemacontainer 409, der Container des deutschen Gebietsschemas 407 und der Container des japanischen Gebietsschemas 411. Weitere Informationen und eine Liste möglicher Sprachbezeichner finden Sie unter Sprachbezeichnerkonstanten und Zeichenfolgen.
Jeder Gebietsschemacontainer speichert Objekte der displaySpecifier-Klasse .
Um alle Anzeigebezeichner für ein Gebietsschema aufzulisten, listen Sie alle displaySpecifier-Objekte im angegebenen Gebietsschemacontainer im Container DisplaySpecifiers auf.
Das folgende Codebeispiel enthält eine Funktion, die an den Anzeigebezeichnercontainer für das angegebene Gebietsschema bindet:
/**********
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;
}