énumération ADS_SYSTEMFLAG_ENUM (iads.h)
L’énumération ADS_SYSTEMFLAG_ENUM définit certaines des valeurs qui peuvent être affectées à l’attribut systemFlags. Certaines des valeurs de l’énumération sont spécifiques aux objets attributeSchema ; d’autres valeurs peuvent être définies sur des objets de n’importe quelle classe.
Syntax
typedef enum __MIDL___MIDL_itf_ads_0001_0017_0001 {
ADS_SYSTEMFLAG_DISALLOW_DELETE = 0x80000000,
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME = 0x40000000,
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE = 0x20000000,
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE = 0x10000000,
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME = 0x8000000,
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE = 0x4000000,
ADS_SYSTEMFLAG_CR_NTDS_NC = 0x1,
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN = 0x2,
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED = 0x1,
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED = 0x4
} ADS_SYSTEMFLAG_ENUM;
Constantes
ADS_SYSTEMFLAG_DISALLOW_DELETE Valeur : 0x80000000 Identifie un objet qui ne peut pas être supprimé. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME Valeur : 0x40000000 Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être renommé ; sinon, l’objet ne peut pas être renommé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE Valeur : 0x20000000 Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être déplacé ; sinon, l’objet ne peut pas être déplacé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE Valeur : 0x10000000 Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être déplacé avec des restrictions ; sinon, l’objet ne peut pas être déplacé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet. |
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME Valeur : 0x8000000 Identifie un objet de domaine qui ne peut pas être renommé. |
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE Valeur : 0x4000000 Identifie un objet de domaine qui ne peut pas être déplacé. |
ADS_SYSTEMFLAG_CR_NTDS_NC Valeur : 0x1 Le contexte de nommage est dans NTDS. |
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN Valeur : 0x2 Le contexte de nommage est un domaine. |
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED Valeur : 0x1 Si cet indicateur est défini dans l’attribut systemFlags d’un objet attributeSchema , l’attribut ne doit pas être répliqué. |
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED Valeur : 0x4 Si cet indicateur est défini dans l’attribut systemFlags d’un objet attributeSchema , l’attribut est une propriété construite. |
Notes
Pour les objets classSchema et attributeSchema , le bit 0x10 de l’attribut systemFlags indique un objet qui fait partie du schéma de base inclus avec Active Directory. Ce bit ne peut pas être défini sur les nouveaux objets classSchema et attributeSchema . L’énumération ADS_SYSTEMFLAG_ENUM n’inclut pas de constante pour ce bit.
Exemples
L’exemple de code suivant montre comment les éléments de l’énumération ADS_SYSTEMFLAG_ENUM , ainsi que l’interface IDirectorySearch , sont utilisés pour rechercher des propriétés non répliquées.
#include <wchar.h>
#include <activeds.h>
#include <atlbase.h>
HRESULT hr = E_FAIL;
LPWSTR szPrefix = L"LDAP://%s";
LPWSTR szPath = NULL;
IDirectorySearch *pSchemaNC = NULL;
IADs *pObject = NULL;
size_t nLength = 0;
LPWSTR pszSearchFilterTemplate = L"(&(objectCategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.804:=%d))";
LPWSTR pszSearchFilter = NULL;
CoInitialize(NULL); // Initialize COM
// Get rootDSE and the schema container distinguished name.
// Bind to current user's domain using current user's security context.
hr = ADsOpenObject(L"LDAP://rootDSE",
NULL,
NULL,
ADS_SECURE_AUTHENTICATION, // Use Secure Authentication.
IID_IADs,
(void**)&pObject);
if (SUCCEEDED(hr))
{
CComVarinat svar;
hr = pObject->Get(CComBSTR("schemaNamingContext"), &svar);
if (SUCCEEDED(hr))
{
nLength = wcslen(szPrefix) + wcslen(svar.bstrVal) + 1;
szPath = new WCHAR[nLength];
swprintf_s(szPath, szPrefix, svar.bstrVal);
hr = ADsOpenObject(szPath,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IDirectorySearch,
(void**)&pSchemaNC);
delete [] szPath;
if (SUCCEEDED(hr))
{
wprintf(L"Find non-replicated attributes\n");
// Create search filter to find attributes with systemFlags that
// match ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
nLength = wcslen(pszSearchFilterTemplate) + 25 + 1;
pszSearchFilter = new WCHAR[nLength];
swprintf_s(pszSearchFilter, pszSearchFilterTemplate, ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED);
// Attributes are one-level deep in the schema container
// so only need to search one level.
ADS_SEARCHPREF_INFO SearchPrefs;
SearchPrefs.dwSearchPref = ADS_SEARCHPREF_SEARCH_SCOPE;
SearchPrefs.vValue.dwType = ADSTYPE_INTEGER;
SearchPrefs.vValue.Integer = ADS_SCOPE_ONELEVEL;
DWORD dwNumPrefs = 1;
// COL for iterations.
ADS_SEARCH_COLUMN col;
// Handle used for searching.
ADS_SEARCH_HANDLE hSearch;
IADs *pObj = NULL;
IADs * pIADs = NULL;
// Set the search preference.
hr = pSchemaNC->SetSearchPreference( &SearchPrefs, dwNumPrefs);
if (FAILED(hr))
{
return hr;
}
CONST DWORD dwAttrNameSize = 1;
LPOLESTR pszAttribute[dwAttrNameSize];
pszAttribute[0] = L"cn";
// Execute the search.
hr = pSchemaNC->ExecuteSearch(pszSearchFilter,
pszAttribute,
dwAttrNameSize,
&hSearch );
delete [] pszSearchFilter;
if ( SUCCEEDED(hr) )
{
// Call IDirectorySearch::GetNextRow() to retrieve
// the next row of data.
while( pSchemaNC->GetNextRow( hSearch) != S_ADS_NOMORE_ROWS)
{
// Loop through the array of passed column names,
// print the data for each column.
for (DWORD x = 0; x < dwAttrNameSize; x++)
{
// Get the data for this column.
hr = pSchemaNC->GetColumn( hSearch,
pszAttribute[x],
&col );
if ( SUCCEEDED(hr) )
{
// Print the data for the column and
// free the column.
if (col.dwADsType == ADSTYPE_CASE_IGNORE_STRING)
{
wprintf(L"%s: %s\r\n",
pszAttribute[x],
col.pADsValues->CaseIgnoreString);
}
else
{
wprintf(L"<%s property is not a string>", pszAttribute[x]);
}
pSchemaNC->FreeColumn( &col );
}
}
}
// Close the search handle to clean up.
pSchemaNC->CloseSearchHandle(hSearch);
}
}
}
pObject->Release();
}
CoUninitialize(); // uninitialize COM.
Configuration requise
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
En-tête | iads.h |