| Platform SDK: Active Directory, ADSI, and Directory Services |
The following function checks the status of an array of ADS_SEARCHPREF_INFO structures and displays the status in a message box:
HRESULT CheckPreferences(
ADS_SEARCHPREF_INFO *pSearchPref, // Array of search preferences.
DWORD dwSearchPrefCount
)
{
if ((!pSearchPref)||(dwSearchPrefCount<1))
return E_INVALIDARG;
HRESULT hr = S_OK;
LPOLESTR szString = new OLECHAR[MAX_PATH*5];
LPOLESTR szTemp = new OLECHAR[MAX_PATH];
LPOLESTR szStatus = new OLECHAR[MAX_PATH];
LPOLESTR szPref = new OLECHAR[MAX_PATH];
wcscpy(szString,L"Check preferences:\r\n");
for (DWORD i=0; i<dwSearchPrefCount; i++)
{
switch (pSearchPref[i].dwStatus)
{
case ADS_STATUS_S_OK:
wcscpy(szStatus, L"ADS_STATUS_S_OK");
break;
case ADS_STATUS_INVALID_SEARCHPREF:
wcscpy(szStatus, L"ADS_STATUS_INVALID_SEARCHPREF");
break;
case ADS_STATUS_INVALID_SEARCHPREFVALUE:
wcscpy(szStatus, L"ADS_STATUS_INVALID_SEARCHPREFVALUE");
break;
default:
swprintf(szStatus, L"Unknown status: %d",
pSearchPref[i].dwStatus);
break;
}
switch (pSearchPref[i].dwSearchPref)
{
case ADS_SEARCHPREF_ASYNCHRONOUS:
wcscpy(szPref, L"ADS_SEARCHPREF_ASYNCHRONOUS");
break;
case ADS_SEARCHPREF_SIZE_LIMIT:
wcscpy(szPref, L"ADS_SEARCHPREF_SIZE_LIMIT");
break;
case ADS_SEARCHPREF_TIME_LIMIT:
wcscpy(szPref, L"ADS_SEARCHPREF_TIME_LIMIT");
break;
case ADS_SEARCHPREF_ATTRIBTYPES_ONLY:
wcscpy(szPref, L"ADS_SEARCHPREF_ATTRIBTYPES_ONLY");
break;
case ADS_SEARCHPREF_SEARCH_SCOPE:
wcscpy(szPref, L"ADS_SEARCHPREF_SEARCH_SCOPE");
break;
case ADS_SEARCHPREF_TIMEOUT:
wcscpy(szPref, L"ADS_SEARCHPREF_TIMEOUT");
break;
case ADS_SEARCHPREF_PAGESIZE:
wcscpy(szPref, L"ADS_SEARCHPREF_PAGESIZE");
break;
case ADS_SEARCHPREF_PAGED_TIME_LIMIT:
wcscpy(szPref, L"ADS_SEARCHPREF_PAGED_TIME_LIMIT");
break;
case ADS_SEARCHPREF_CHASE_REFERRALS:
wcscpy(szPref, L"ADS_SEARCHPREF_CHASE_REFERRALS");
break;
case ADS_SEARCHPREF_SORT_ON:
wcscpy(szPref, L"ADS_SEARCHPREF_SORT_ON");
break;
case ADS_SEARCHPREF_CACHE_RESULTS:
wcscpy(szPref, L"ADS_SEARCHPREF_CACHE_RESULTS");
break;
default:
swprintf(szPref, L"Unknown preference: %d",
pSearchPref[i].dwSearchPref);
break;
}
swprintf(szTemp, L"%d. %s = %s\r\n",
i, szPref, szStatus );
wcscat(szString,szTemp);
}
MessageBox(NULL,szString,L"Check Preference Status",MB_OK);
return hr;
}