ADS_SEARCHPREF_ENUM列挙 (iads.h)
ADS_SEARCHPREF_ENUM列挙は、IDirectorySearch オブジェクトの設定を指定します。 この列挙体は、IDirectorySearch::SetSearchPreference メソッドのADS_SEARCHPREF_INFO構造体の dwSearchPref メンバーで使用されます。
構文
typedef enum __MIDL___MIDL_itf_ads_0000_0000_0025 {
ADS_SEARCHPREF_ASYNCHRONOUS = 0,
ADS_SEARCHPREF_DEREF_ALIASES,
ADS_SEARCHPREF_SIZE_LIMIT,
ADS_SEARCHPREF_TIME_LIMIT,
ADS_SEARCHPREF_ATTRIBTYPES_ONLY,
ADS_SEARCHPREF_SEARCH_SCOPE,
ADS_SEARCHPREF_TIMEOUT,
ADS_SEARCHPREF_PAGESIZE,
ADS_SEARCHPREF_PAGED_TIME_LIMIT,
ADS_SEARCHPREF_CHASE_REFERRALS,
ADS_SEARCHPREF_SORT_ON,
ADS_SEARCHPREF_CACHE_RESULTS,
ADS_SEARCHPREF_DIRSYNC,
ADS_SEARCHPREF_TOMBSTONE,
ADS_SEARCHPREF_VLV,
ADS_SEARCHPREF_ATTRIBUTE_QUERY,
ADS_SEARCHPREF_SECURITY_MASK,
ADS_SEARCHPREF_DIRSYNC_FLAG,
ADS_SEARCHPREF_EXTENDED_DN
} ADS_SEARCHPREF_ENUM;
定数
ADS_SEARCHPREF_ASYNCHRONOUS 値: 0 検索を非同期的に実行することを指定します。 既定では、検索は同期です。 同期検索では、 IDirectorySearch::GetFirstRow メソッドと IDirectorySearch::GetNextRow メソッドは、サーバーが結果全体を返すか、ページ検索の場合はページ全体を返すまで返されません。 非同期検索は、検索結果の 1 行が使用可能になるまで、または ADS_SEARCHPREF_TIMEOUT 検索設定で指定されたタイムアウト間隔が経過するまでブロックします。 |
|||||||||||||||||
ADS_SEARCHPREF_DEREF_ALIASES 見つかったオブジェクトの別名を解決することを指定します。 これを実行する方法を指定するには、 ADS_DEREFENUM 列挙体を使用します。 |
|||||||||||||||||
ADS_SEARCHPREF_SIZE_LIMIT 検索中にサーバーが監視する必要があるサイズ制限を指定します。 サーバーは、サイズ制限に達すると検索を停止し、その時点に累積された結果を返します。 この値が 0 の場合、サイズ制限はディレクトリ サービスによって決定されます。 この値の既定値は 0 です。 この値がディレクトリ サービスによって決定されるサイズ制限を超える場合は、ディレクトリ サービスの制限が優先されます。 Active Directory の場合、サイズ制限は、検索によって返されるオブジェクトの最大数を指定します。 また、Active Directory の場合、検索によって返されるオブジェクトの最大数は 1000 オブジェクトです。 |
|||||||||||||||||
ADS_SEARCHPREF_TIME_LIMIT サーバーが検索の完了を待機する秒数を指定します。 制限時間に達すると、サーバーは検索を停止し、その時点に累積された結果を返します。 この値が 0 の場合、タイムアウト期間は無限になります。 この値の既定値は 120 秒です。 |
|||||||||||||||||
ADS_SEARCHPREF_ATTRIBTYPES_ONLY 値が割り当てられている属性の名前のみを検索で取得する必要があることを示します。 |
|||||||||||||||||
ADS_SEARCHPREF_SEARCH_SCOPE サーバーで監視する必要がある検索スコープを指定します。 適切な設定の詳細については、「 ADS_SCOPEENUM 列挙」を参照してください。 |
|||||||||||||||||
ADS_SEARCHPREF_TIMEOUT クライアントがサーバーが結果を返すのを待機する時間制限を秒単位で指定します。 このオプションは、 ADS_SEARCHPREF_INFO 構造体で設定されます。 |
|||||||||||||||||
ADS_SEARCHPREF_PAGESIZE ページ検索のページ サイズを指定します。 クライアントによる要求ごとに、サーバーはページ サイズによって設定されたオブジェクトの数を返します。 ページ サイズが設定されている場合は、サイズ制限を設定する必要があります。 サイズ制限が設定されている場合は、ページ サイズの値がサイズ制限の値より小さい必要があります。 ページ サイズの値がサイズ制限を超えた場合は、 サイズ 制限で指定された行数でERROR_DS_SIZELIMIT_EXCEEDED エラーが返されます。 |
|||||||||||||||||
ADS_SEARCHPREF_PAGED_TIME_LIMIT 検索全体の時間制限ではなく、サーバーが検索結果のページを待機する秒数を指定します。 制限時間に達すると、サーバーは検索を停止し、その時点まで取得した結果と、検索を再開する場所に関するデータを含む Cookie を返します。 この値が 0 の場合、ページ タイムアウト期間は無限になります。 この制限の既定値は 120 秒です。 |
|||||||||||||||||
ADS_SEARCHPREF_CHASE_REFERRALS 紹介を追跡できるように指定します。 ルート検索がサーバーの名前付けコンテキストで指定されていない場合、または検索結果が名前付けコンテキストを超える場合 (たとえば、子ドメインがあり、親ドメインで検索する場合)、サーバーはクライアントに紹介メッセージを送信し、クライアントは無視または追跡を選択できます。 紹介の追跡の詳細については、「 ADS_CHASE_REFERRALS_ENUM」を参照してください。 |
|||||||||||||||||
ADS_SEARCHPREF_SORT_ON サーバーが結果セットを並べ替えられるように指定します。 並べ替えキーを指定するには、 ADS_SORTKEY 構造体を使用します。 この検索設定は、サーバー側の並べ替え用の LDAP コントロールをサポートするディレクトリ サーバーでのみ機能します。 Active Directory では並べ替えコントロールがサポートされていますが、特に結果セットが大きい場合は、サーバーのパフォーマンスに影響を与える可能性があります。 Active Directory では、1 つの並べ替えキーのみがサポートされます。 |
|||||||||||||||||
ADS_SEARCHPREF_CACHE_RESULTS 結果をクライアント側でキャッシュするかどうかを指定します。 既定では、ADSI は結果セットをキャッシュします。 大きな結果セットでは、このオプションを無効にすることが望ましい場合があります。 |
|||||||||||||||||
ADS_SEARCHPREF_DIRSYNC 指定した状態以降のすべての変更を返すディレクトリ同期 (DirSync) 検索を指定します。 ADSVALUE 構造体で、dwType メンバーを ADS_PROV_SPECIFIC に設定します。 ProviderSpecific メンバーは、lpValue メンバーが変更の取得元の状態を示す Cookie を指定するADS_PROV_SPECIFIC構造体です。 DirSync コントロールを初めて使用するときは、ADS_PROV_SPECIFIC構造体の dwLength メンバーと lpValue メンバーをそれぞれ 0 と NULL に設定します。 IDirectorySearch::GetNextRow がS_ADS_NOMORE_ROWSを返すまで検索によって返された結果セットを読み取った後、IDirectorySearch::GetColumn を呼び出して、次の DirSync 検索で使用する cookie を含むADS_DIRSYNC_COOKIE属性を取得します。 詳細については、「DirSync コントロールとLDAP_SERVER_DIRSYNC_OIDを使用した変更のポーリング」を参照してください。 このフラグを ADS_SEARCHPREF_PAGESIZEと組み合わせることはできません。 呼び出し元には 、SE_SYNC_AGENT_NAME 特権が必要です。 |
|||||||||||||||||
ADS_SEARCHPREF_TOMBSTONE 検索フィルターに一致する削除されたオブジェクトも検索で返す必要があるかどうかを指定します。 オブジェクトが削除されると、Active Directory によって "削除されたオブジェクト" コンテナーに移動されます。 既定では、削除されたオブジェクトは検索結果に含まれません。 ADSVALUE 構造体で、dwType メンバーを ADSTYPE_BOOLEAN に設定します。 削除されたオブジェクトを含めるには、ADSVALUE 構造体の Boolean メンバーを TRUE に設定します。 オブジェクトが削除されるときに、すべての属性が保持されるわけではありません。 objectGUID 属性と RDN 属性を取得できます。 distinguishedName 属性は、前の DN ではなく、"削除されたオブジェクト" コンテナー内のオブジェクトの DN です。 削除されたオブジェクトの isDeleted 属性は TRUE です。 詳細については、「 削除済みオブジェクトの取得」を参照してください。 |
|||||||||||||||||
ADS_SEARCHPREF_VLV 検索で LDAP 仮想リスト ビュー (VLV) コントロールを使用することを指定します。 ADS_SEARCHPREF_VLV は、適切なフィールドを設定することで、文字列型とオフセット型の両方の VLV 検索にアクセスするために使用できます。 これらの 2 つのオプションを同時に使用することはできません。VLV コントロールを設定して、特定のオフセットにあり、並べ替え順序の特定の値に従う結果セットを要求することはできません。 文字列検索を実行するには、ADS_VLVの lpszTarget フィールドを検索する文字列に設定します。 オフセット型検索を実行するには、 ADS_VLVで dwOffset フィールドを設定します。 オフセット検索を使用する場合は、 lpszTarget を NULL に設定する必要があります。 ADS_SEARCHPREF_VLVを使用する場合は、ADS_SEARCHPREF_SORT_ONを TRUE に設定する必要があります。 検索結果の並べ替え順序によって、VLV 検索に使用される順序が決まります。 オフセット型の検索を実行する場合、オフセットは並べ替えられたリストのインデックスとして使用されます。 文字列型検索を実行する場合、サーバーは並べ替え順序に基づいて、文字列より大きいか等しい最初のエントリを返そうとします。 ADS_SEARCHPREF_VLVが指定されている場合、検索結果のキャッシュは無効になります。 TRUE ADS_SEARCHPREF_CACHE_RESULTSを割り当てると、ADS_SEARCHPREF_VLVを使用する場合、SetSearchPreference は失敗し、エラー E_ADS_BAD_PARAMETERを返します。 |
|||||||||||||||||
ADS_SEARCHPREF_ATTRIBUTE_QUERY 属性スコープのクエリ検索を実行する必要があることを指定します。 検索は、基本オブジェクトの指定した属性で指定された オブジェクトに対して実行されます。 ADS_SEARCHPREF_INFO 構造体の vValue メンバーには、検索する属性の lDAPDisplayName を含むADSTYPE_CASE_IGNORE_STRING値が含まれています。 この属性は 、ADS_DN_STRING 属性である必要があります。 指定できる属性は 1 つだけです。 この設定を使用すると、検索範囲は自動的に ADS_SCOPE_BASE に設定され、それ以外の場合はスコープを設定しようとするとエラー E_ADS_BAD_PARAMETERで失敗します。 ADS_SEARCHPREF_VLV設定を除き、LDAP コントロールを使用する他のすべての基本設定 (ADS_SEARCHPREF_DIRSYNC、ADS_SEARCHPREF_TOMBSTONEなど) は、この設定を指定しても許可されません。 |
|||||||||||||||||
ADS_SEARCHPREF_SECURITY_MASK 指定した属性のセキュリティ アクセス データを検索で返す必要があることを指定します。 ADS_SEARCHPREF_INFO構造体の vValue メンバーには、次の値の 1 つ以上の組み合わせであるADS_INTEGER値が含まれています。
ADS_SEARCHPREF_SECURITY_MASKを使用してセキュリティ マスクを明示的に指定せずにセキュリティ記述子を読み取った場合、既定値は ADS_SECURITY_INFO_OWNER に相当します。 |
ADS_SECURITY_INFO_GROUP | ADS_SECURITY_INFO_DACL。 | |||||||||||||||
ADS_SEARCHPREF_DIRSYNC_FLAG ADS_SEARCHPREF_DIRSYNC検索設定で使用する省略可能なフラグが含まれています。 ADS_SEARCHPREF_INFO構造体の vValue メンバーには、0 または次の値の 1 つ以上の組み合わせであるADSTYPE_INTEGER値が含まれています。 DirSync コントロールの詳細については、「DirSync コントロールとLDAP_SERVER_DIRSYNC_OIDを使用した変更のポーリング」を参照してください。
|
|||||||||||||||||
ADS_SEARCHPREF_EXTENDED_DN 検索では、Active Directory 拡張形式の識別名を返す必要があります。 ADS_SEARCHPREF_INFO構造体の vValue メンバーには、DN 文字列の GUID と SID の部分が 16 進形式である必要がある場合は 0、DN 文字列の GUID と SID の部分が標準形式である場合は 1 つを含むADSTYPE_INTEGER値が含まれます。 拡張識別名の詳細については、「 LDAP_SERVER_EXTENDED_DN_OID」を参照してください。 |
解説
検索設定を設定するには、サーバーに渡される ADS_SEARCHPREF_INFO 構造のフィールドに適切な値を割り当てます。 ADS_SEARCHPREF_INFO 構造体の vValue メンバーは ADSVALUE 構造体です。 次の一覧は、ADS_SEARCHPREF_ENUM値、ADSVALUE 構造体の dwType メンバーの対応する値、および指定した型に使用される ADSVALUE メンバーの一覧です。
ADS_SEARCHPREF_ENUM 値 | ADSVALUE の dwType メンバー | ADSVALUE メンバー |
---|---|---|
ADS_SEARCHPREF_ASYNCHRONOUS | ADSTYPE_BOOLEAN | Boolean |
ADS_SEARCHPREF_DEREF_ALIASES | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_SIZE_LIMIT | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_TIME_LIMIT | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_ATTRIBTYPES_ONLY | ADSTYPE_BOOLEAN | Boolean |
ADS_SEARCHPREF_SEARCH_SCOPE | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_TIMEOUT | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_PAGESIZE | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_PAGED_TIME_LIMIT | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_CHASE_REFERRALS | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_SORT_ON | ADSTYPE_PROV_SPECIFIC | ProviderSpecific |
ADS_SEARCHPREF_CACHE_RESULTS | ADSTYPE_BOOLEAN | Boolean |
ADS_SEARCHPREF_DIRSYNC | ADSTYPE_PROV_SPECIFIC | ProviderSpecific |
ADS_SEARCHPREF_TOMBSTONE | ADSTYPE_BOOLEAN | Boolean |
ADS_SEARCHPREF_VLV | ADSTYPE_PROV_SPECIFIC | ProviderSpecific |
ADS_SEARCHPREF_ATTRIBUTE_QUERY | ADSTYPE_CASE_IGNORE_STRING | CaseIgnoreString |
ADS_SEARCHPREF_SECURITY_MASK | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_DIRSYNC_FLAG | ADSTYPE_INTEGER | 整数 |
ADS_SEARCHPREF_EXTENDED_DN | ADSTYPE_INTEGER | 整数 |
複数の基本設定を設定するには、 ADS_SEARCHPREF_INFO 構造体の配列を使用します。 この列挙体のメンバー値は、ADS_SEARCHPREF_INFO構造体の dwSearchPref メンバーに割り当てられます。
LDAP システム プロバイダーでは、すべてのオプションがサポートされています。
VBScript はタイプ ライブラリからデータを読み取ることができないため、VBScript アプリケーションは上記で定義したシンボリック定数を認識しません。 代わりに数値定数を使用して、VBScript アプリケーションで適切なフラグを設定する必要があります。 シンボリック定数を適切なプログラミングプラクティスとして使用するには、VBScript アプリケーションでここで行われるように、このような定数を明示的に宣言します。
例
次のコード例は、 ADS_SEARCHPREF_INFO 列挙を使用して検索設定を設定する方法を示しています。
HRESULT SetSearchPreferences2(
DWORD dwScope,// -1 indicates default: subtree.
DWORD dwOverallTimeOut,// <=0 indicates default: no time out set.
DWORD dwOverallSizeLimit,// <=0 indicates default: no size limit set.
DWORD dwOverallTimeLimit,// <=0 indicates default: no time limit set.
BOOL bCacheResult,// TRUE indicates default.
BOOL bIsAsynchronous,// FALSE indicates default.
DWORD dwPageSize,// <=0 indicates default.
DWORD dwPageTimeLimit,// <=0 indicates default.
DWORD dwChaseReferral,// <=0 indicates default.
LPOLESTR szSortKey,// NULL indicates do not sort.
BOOL bIsDescending,
BOOL bReturnAttributeNamesOnly,// FALSE indicates default.
ADS_SEARCHPREF_INFO **ppSearchPref, // Return an array of search preferences.
DWORD *pdwSearchPrefCount
)
{
HRESULT hr = S_OK;
DWORD dwCountPref = 0L;
// Determine size of preferences array.
DWORD dwTotal = 11L;
if(dwScope==-1)
dwTotal--;
if(dwOverallTimeOut<=0)
dwTotal--;
if(dwOverallSizeLimit<=0)
dwTotal--;
if(dwOverallTimeLimit<=0)
dwTotal--;
if(bCacheResult)
dwTotal--;
if(!bIsAsynchronous)
dwTotal--;
if(dwPageSize<=0)
dwTotal--;
if(dwPageTimeLimit<=0)
dwTotal--;
if(dwChaseReferral<=0)
dwTotal--;
if(!bReturnAttributeNamesOnly)
dwTotal--;
if (!szSortKey)
dwTotal--;
ADS_SEARCHPREF_INFO *prefInfo = new ADS_SEARCHPREF_INFO[ dwTotal ];
ADS_SORTKEY SortKey;
if(!prefInfo)
{
return E_OUTOFMEMORY;
}
//////////////////
// Search Scope
//////////////////
if(dwScope>=0)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_SEARCH_SCOPE;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;
prefInfo[dwCountPref].vValue.Integer = dwScope;
dwCountPref++;
}
//////////////////
// Time Out
//////////////////
if(dwOverallTimeOut>0)
{
prefInfo[dwCountPref].dwSearchPref = ADS_SEARCHPREF_TIMEOUT;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;
prefInfo[dwCountPref].vValue.Integer = dwOverallTimeOut;
dwCountPref++;
}
///////////////
// Size Limit
///////////////
if(dwOverallSizeLimit>0)
{
prefInfo[dwCountPref].dwSearchPref = ADS_SEARCHPREF_SIZE_LIMIT;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;
prefInfo[dwCountPref].vValue.Integer = dwOverallSizeLimit;
dwCountPref++;
}
///////////////
// Time Limit
///////////////
if(dwOverallTimeLimit>0)
{
prefInfo[dwCountPref].dwSearchPref = ADS_SEARCHPREF_TIME_LIMIT;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;
prefInfo[dwCountPref].vValue.Integer = dwOverallTimeLimit;
dwCountPref++;
}
/////////////////
// Cache Result
/////////////////
if (!bCacheResult)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_CACHE_RESULTS;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_BOOLEAN;
prefInfo[dwCountPref].vValue.Boolean = bCacheResult;
dwCountPref++;
}
//////////////
// Page Size
//////////////
if(dwPageSize>0)
{
prefInfo[dwCountPref].dwSearchPref = ADS_SEARCHPREF_PAGESIZE;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;;
prefInfo[dwCountPref].vValue.Integer = dwPageSize;
dwCountPref++;
}
//////////////////
// Page Time Limit
//////////////////
if(dwPageTimeLimit>0)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_PAGED_TIME_LIMIT;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;;
prefInfo[dwCountPref].vValue.Integer = dwPageTimeLimit;
dwCountPref++;
}
///////////////////
// Chase Referrals
///////////////////
if(dwChaseReferral>0)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_CHASE_REFERRALS;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_INTEGER;
prefInfo[dwCountPref].vValue.Integer = dwChaseReferral;
dwCountPref++;
}
/////////////
// Sort
/////////////
if (szSortKey)
{
prefInfo[dwCountPref].dwSearchPref = ADS_SEARCHPREF_SORT_ON;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_PROV_SPECIFIC;
SortKey.pszAttrType = (LPWSTR)LocalAlloc(
LPTR,
wcslen(szSortKey)*sizeof(WCHAR) +sizeof(WCHAR)
);
wcscpy_s(SortKey.pszAttrType,szSortKey);
SortKey.pszReserved = NULL;
SortKey.fReverseorder = 0;
prefInfo[dwCountPref].vValue.ProviderSpecific.dwLength =
sizeof(ADS_SORTKEY);
prefInfo[dwCountPref].vValue.ProviderSpecific.lpValue =
(LPBYTE) &SortKey;
dwCountPref++;
}
/////////////////
// Asynchronous
/////////////////
if(bIsAsynchronous)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_ASYNCHRONOUS;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_BOOLEAN;
prefInfo[dwCountPref].vValue.Integer = bIsAsynchronous;
dwCountPref++;
}
////////////////////////
// Attribute Type Only
////////////////////////
if(bReturnAttributeNamesOnly)
{
prefInfo[dwCountPref].dwSearchPref =
ADS_SEARCHPREF_ATTRIBTYPES_ONLY;
prefInfo[dwCountPref].vValue.dwType = ADSTYPE_BOOLEAN;
prefInfo[dwCountPref].vValue.Integer =
bReturnAttributeNamesOnly;
dwCountPref++;
}
if (SUCCEEDED(hr))
{
*pdwSearchPrefCount = dwCountPref;
*ppSearchPref = prefInfo;
}
else
{
*pdwSearchPrefCount = 0L;
*ppSearchPref = NULL;
}
return hr;
}
要件
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
Header | iads.h |