Uso di IDirectorySearch e IDirectoryObject per il recupero di intervalli
Le interfacce IDirectoryObject o IDirectorySearch possono essere usate per recuperare un intervallo di valori delle proprietà. A tale scopo, specificare l'attributo e l'intervallo per uno degli attributi richiesti nella query.
Recupero di intervalli con IDirectoryObject
L'interfaccia IDirectoryObject può essere usata per il recupero di intervalli specificando l'attributo e l'intervallo per uno degli attributi nella matrice pAttributesName quando si chiama il metodo IDirectoryObject::GetObjectAttributes.
PADS_ATTR_INFO pAttrInfo;
DWORD dwRetrieved;
LPWSTR pszAttrs[2];
pszAttrs[0] = L"Name";
pszAttrs[1] = L"member;range=0-100";
hr = pdo->GetObjectAttributes(pszAttrs, 2, &pAttrInfo, &dwRetrieved);
Per altre informazioni e un esempio di codice che illustra come usare l'interfaccia IDirectoryObject per il recupero dell'intervallo, vedere Codice di esempio per l'intervallo con IDirectoryObject.
Recupero di intervalli con IDirectorySearch
L'interfaccia IDirectorySearch può essere usata per il recupero di intervalli specificando l'attributo e l'intervallo per uno degli attributi recuperati nella matrice pAttributesName quando si chiama il metodo IDirectorySearch::ExecuteSearch.
ADS_SEARCH_HANDLE hSearch;
LPWSTR pszAttrs[2];
pszAttrs[0] = L"Name";
pszAttrs[1] = L"member;range=0-100";
hr = pdo->ExecuteSearch(L"(objectClass=user)", pszAttrs, 2, &hSearch);
Quando si usa l'interfaccia IDirectorySearch per il recupero dell'intervallo, è necessario risolvere un problema specifico. Quando l'intervallo richiesto supera il numero di valori rimanenti, IDirectorySearch::GetColumn restituirà E_ADS_COLUMN_NOT_edizione Standard T. Per recuperare i valori rimanenti, è necessario usare il carattere jolly dell'intervallo '*'. Ad esempio, se un gruppo contiene 150 membri, i valori dei membri 0-100 possono essere recuperati normalmente usando il recupero con intervallo. Se viene richiesto l'intervallo 101-200, IDirectorySearch::GetColumn restituirà E_ADS_COLUMN_NOT_edizione Standard T. Questo problema può essere evitato usando il metodo IDirectorySearch::GetNextColumnName. In genere, GetNextColumnName restituirà la stringa di query originale. Tuttavia, quando l'intervallo richiesto supera il numero di valori rimanenti, GetNextColumnName restituirà una versione modificata della stringa di query sostituendo il valore di intervallo elevato con il carattere jolly dell'intervallo '*'. Nell'esempio precedente, la prima query verrà eseguita con una stringa di attributo "member; range=0-100" e GetNextColumnName restituirà "member; range=0-100". Nella seconda query la stringa dell'attributo sarà "member; range=101-200", ma GetNextColumnName restituirà "member; range=101-*". Questo caso può essere determinato confrontando la stringa dell'attributo originale con il risultato di GetNextColumnName. Se le stringhe sono diverse, l'ultimo blocco di valori deve essere richiesto di nuovo con il carattere jolly dell'intervallo.
Per altre informazioni e un esempio di codice che illustra come usare l'interfaccia IDirectorySearch per il recupero di intervalli, vedere Codice di esempio per l'intervallo con IDirectorySearch.