enumerasi ADS_SYSTEMFLAG_ENUM (iads.h)
Enumerasi ADS_SYSTEMFLAG_ENUM mendefinisikan beberapa nilai yang dapat ditetapkan ke atribut systemFlags . Beberapa nilai dalam enumerasi khusus untuk objek attributeSchema ; nilai lain dapat diatur pada objek dari kelas apa pun.
Sintaks
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;
Konstanta
ADS_SYSTEMFLAG_DISALLOW_DELETE Nilai: 0x80000000 Mengidentifikasi objek yang tidak dapat dihapus. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME Nilai: 0x40000000 Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat diganti namanya; jika tidak, objek tidak dapat diganti namanya. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE Nilai: 0x20000000 Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat dipindahkan; jika tidak, objek tidak dapat dipindahkan. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek. |
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE Nilai: 0x10000000 Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat dipindahkan dengan batasan; jika tidak, objek tidak dapat dipindahkan. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek. |
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME Nilai: 0x8000000 Mengidentifikasi objek domain yang tidak dapat diganti namanya. |
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE Nilai: 0x4000000 Mengidentifikasi objek domain yang tidak dapat dipindahkan. |
ADS_SYSTEMFLAG_CR_NTDS_NC Nilai: 0x1 Konteks penamaan ada di NTDS. |
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN Nilai: 0x2 Konteks penamaan adalah domain. |
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED Nilai: 0x1 Jika bendera ini diatur dalam atribut systemFlags dari objek attributeSchema , atribut tidak akan direplikasi. |
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED Nilai: 0x4 Jika bendera ini diatur dalam atribut systemFlags dari objek attributeSchema , atribut adalah properti yang dibangun. |
Keterangan
Untuk objek classSchema dan attributeSchema , bit 0x10 atribut systemFlags menunjukkan objek yang merupakan bagian dari skema dasar yang disertakan dengan Direktori Aktif. Bit ini tidak dapat diatur pada objek classSchema dan attributeSchema baru. Enumerasi ADS_SYSTEMFLAG_ENUM tidak menyertakan konstanta untuk bit ini.
Contoh
Contoh kode berikut menunjukkan bagaimana elemen enumerasi ADS_SYSTEMFLAG_ENUM , bersama dengan antarmuka IDirectorySearch , digunakan untuk mencari properti yang tidak direplikasi.
#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.
Persyaratan
Klien minimum yang didukung | Windows Vista |
Server minimum yang didukung | Windows Server 2008 |
Header | iads.h |