ADS_VLV-Struktur (iads.h)

Die ADS_VLV-Struktur enthält Metadaten, die zum Durchführen von VLV-Suchvorgängen (Virtual List View) verwendet werden. Diese Struktur erfüllt zwei Rollen. Zunächst werden die Sucheinstellungen angegeben, die an den Server gesendet werden. Zweitens werden die VLV-Metadaten vom Server zurückgegeben.

Syntax

typedef struct _ads_vlv {
  DWORD  dwBeforeCount;
  DWORD  dwAfterCount;
  DWORD  dwOffset;
  DWORD  dwContentCount;
  LPWSTR pszTarget;
  DWORD  dwContextIDLength;
  LPBYTE lpContextID;
} ADS_VLV, *PADS_VLV;

Members

dwBeforeCount

Gibt die Anzahl der Einträge vor dem Zieleintrag an, die der Client vom Server anfordert.

dwAfterCount

Gibt die Anzahl der Einträge nach dem Zieleintrag an, die der Client vom Server anfordert.

dwOffset

Gibt bei der Eingabe den angeforderten Offset des Zieleintrags innerhalb der Liste an. Wenn der Client einen Offset angibt, der der vom Client angenommenen Inhaltsanzahl entspricht, ist das Ziel der letzte Eintrag in der Liste. Gibt bei der Ausgabe die beste Schätzung des Servers für den tatsächlichen Offset der Position des zurückgegebenen Zieleintrags in der Liste an.

dwContentCount

Der Eingabewert stellt den geschätzten Wert des Clients für die Inhaltsanzahl dar. Der Ausgabewert ist die Schätzung der Inhaltsanzahl des Servers. Wenn der Client eine Inhaltsanzahl von 0 sendet, bedeutet dies, dass der Server seine Schätzung der Inhaltsanzahl anstelle des Clients verwenden muss.

pszTarget

Optional. Unicode-Zeichenfolge mit Null-Endung, die den vom Client angeforderten gewünschten Zieleintrag angibt. Wenn dieser Parameter einen Wert ohne NULL enthält, ignoriert der Server den in dwOffset angegebenen Wert und sucht nach dem ersten Zieleintrag, dessen Wert für den primären Sortierschlüssel größer oder gleich der angegebenen Zeichenfolge ist, basierend auf der Sortierreihenfolge der Liste.

dwContextIDLength

Optional. Parameter, der die Länge des Kontextbezeichners angibt. Wenn Sie bei der Eingabe einen Kontextbezeichner in lpContextID übergeben, muss dies auf die Größe des Bezeichners in Bytes festgelegt werden. Andernfalls muss er gleich 0 festgelegt werden. Wenn lpContextID in der Ausgabe einen Wert ohne NULL enthält, gibt dies die Länge der vom Server zurückgegebenen Kontext-ID in Bytes an.

lpContextID

Optional. Gibt den vom Server generierten Kontextbezeichner an. Dieser Parameter kann an Clients gesendet werden. Wenn ein Client diesen Parameter empfängt, sollte er ihn unverändert in einer nachfolgenden Anforderung zurückgeben, die sich auf dieselbe Liste bezieht. Diese Interaktion kann die Leistung und Effektivität der Server verbessern. Wenn kein Kontextbezeichner an den Server übergeben wird, muss dieser Member auf NULL-Wert festgelegt werden. Wenn dieses Element in der Ausgabe einen Wert ohne NULL enthält, verweist dies auf die vom Server zurückgegebene Kontext-ID.

Hinweise

Um die VLV nach dwContentCount und dwOffset festzulegen, müssen Sie auch pszTarget auf einen NULL-Wert festlegen. Wenn pszTarget einen Nicht-NULL-Wert enthält, wird er als Offset verwendet, andernfalls wird lOffset als Offset verwendet. Es wird empfohlen, die Struktur auf Null zu initialisieren.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie die ersten 30 Einträge in einem Resultset abgerufen werden.

ADS_SEARCHPREF_INFO prefInfo[2];
ADS_VLV vlv;

vlv.dwBeforeCount=0;
vlv.dwAfterCount=30;
vlv.dwOffset=1;
vlv.dwContentCount=0;
vlv.pszTarget = NULL; 
vlv.dwContextIDLength = 0;
vlv.lpContextID = NULL;

// VLV set preferences.
prefInfo[0].dwSearchPref = ADS_SEARCHPREF_VLV;
prefInfo[0].vValue.dwType = ADSTYPE_PROV_SPECIFIC;
prefInfo[0].vValue.ProviderSpecific.dwLength = sizeof(ADS_VLV);
prefInfo[0].vValue.ProviderSpecific.lpValue = (LPBYTE) &vlv;

// Sort key set preferences.
prefInfo[1].dwSearchPref = ADS_SEARCHPREF_SORT_ON;
prefInfo[1].vValue.dwType = ADSTYPE_PROV_SPECIFIC;
prefInfo[1].vValue.ProviderSpecific.dwLength = sizeof(ADS_SORTKEY);
prefInfo[1].vValue.ProviderSpecific.lpValue = (LPBYTE) pSortKey;

hr = m_pSearch->SetSearchPreference(prefInfo, 2);

Das folgende Codebeispiel zeigt, wie die ersten 50 Einträge in einem Resultset abgerufen werden, die mit den Buchstaben "Ha" beginnen.

ADS_VLV vlv;

vlv.dwBeforeCount=0;
vlv.dwAfterCount=50;
vlv.pszTarget= L"Ha";
vlv.lpContextID = NULL; 
vlv.dwContextIDLength = 0;

// For more information about how to set the preference, see the previous code example.

Im folgenden Codebeispiel wird veranschaulicht, wie die ersten 100 Einträge am ungefähren Ziel von 60 % abgerufen werden, vorausgesetzt, der Server hat dwContentCount zuvor als 4294 zurückgegeben.

Hinweis: vlvResp stellt eine ADS_VLV Struktur dar, die zuvor vom Server zurückgegeben wurde.
 
ADS_VLV vlv;

vlv.dwBeforeCount=50;
vlv.dwAfterCount=50;
vlv.dwOffset=2577;  
vlv.dwContentCount=4294;
vlv.pszTarget = NULL;
vlv.dwContextIDLength = vlvResp.dwContextIDLength; 
vlv.lpContextID = vlvResp.lpContextID;

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Kopfzeile iads.h

Weitere Informationen

ADS_SEARCHPREF_ENUM

Suchen mithilfe von VLV

Idirectorysearch