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; }