ADS_VLV 구조체(iads.h)

ADS_VLV 구조에는 VLV(가상 목록 보기) 검색을 수행하는 데 사용되는 메타데이터가 포함되어 있습니다. 이 구조체는 두 가지 역할을 합니다. 먼저 서버로 전송되는 검색 기본 설정을 지정합니다. 둘째, 서버에서 VLV 메타데이터를 반환합니다.

구문

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

멤버

dwBeforeCount

클라이언트가 서버에서 요청하는 대상 항목 앞의 항목 수를 나타냅니다.

dwAfterCount

클라이언트가 서버에서 요청하는 대상 항목 뒤의 항목 수를 나타냅니다.

dwOffset

입력 시 은 목록 내에서 대상 항목의 요청된 오프셋을 나타냅니다. 클라이언트가 클라이언트의 가정된 콘텐츠 수와 동일한 오프셋을 지정하는 경우 대상은 목록의 마지막 항목입니다. 출력에서 는 목록에서 반환된 대상 항목의 위치의 실제 오프셋에 대한 서버의 가장 좋은 추정치를 나타냅니다.

dwContentCount

입력 값은 콘텐츠 수에 대한 클라이언트의 예상 값을 나타냅니다. 출력 값은 서버의 콘텐츠 수 추정치입니다. 클라이언트가 0의 콘텐츠 수를 보내는 경우 서버는 클라이언트 대신 예상 콘텐츠 수를 사용해야 합니다.

pszTarget

(선택 사항) 클라이언트에서 요청한 원하는 대상 항목을 나타내는 Null로 종료된 유니코드 문자열입니다. 이 매개 변수에 NULL 이 아닌 값이 포함된 경우 서버는 dwOffset 에 지정된 값을 무시하고 목록의 정렬 순서에 따라 기본 정렬 키 값이 지정된 문자열보다 크거나 같은 첫 번째 대상 항목을 검색합니다.

dwContextIDLength

(선택 사항) 컨텍스트 식별자의 길이를 나타내는 매개 변수입니다. 입력 시 lpContextID에서 컨텍스트 식별자를 전달하는 경우 식별자 크기(바이트)로 설정해야 합니다. 그렇지 않으면 0으로 설정해야 합니다. 출력에서 lpContextIDNULL 이 아닌 값이 포함된 경우 서버에서 반환된 컨텍스트 ID의 길이(바이트)를 나타냅니다.

lpContextID

(선택 사항) 서버에서 생성된 컨텍스트 식별자를 나타냅니다. 이 매개 변수는 클라이언트로 전송될 수 있습니다. 클라이언트가 이 매개 변수를 수신하는 경우 동일한 목록과 관련된 후속 요청에서 변경되지 않은 상태로 반환해야 합니다. 이러한 상호 작용은 서버의 성능과 효율성을 향상시킬 수 있습니다. 컨텍스트 식별자를 서버에 전달하지 않으면 이 멤버를 NULL 값으로 설정해야 합니다. 출력에서 이 멤버에 NULL 이 아닌 값이 포함된 경우 서버에서 반환된 컨텍스트 ID를 가리킵니다.

설명

dwContentCountdwOffset으로 VLV를 설정하려면 pszTargetNULL 값으로 설정해야 합니다. pszTargetNULL이 아닌 값이 포함된 경우 오프셋으로 사용됩니다. 그렇지 않으면 lOffset이 오프셋으로 사용됩니다. 구조를 0으로 초기화하는 것이 좋습니다.

예제

다음 코드 예제에서는 결과 집합에서 처음 30개 항목을 검색하는 방법을 보여 있습니다.

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

다음 코드 예제에서는 "Ha" 문자로 시작하는 결과 집합의 처음 50개 항목을 검색하는 방법을 보여 있습니다.

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.

다음 코드 예제에서는 서버가 이전에 dwContentCount 를 4294로 반환한 것으로 가정하여 대략적인 60% 대상에서 처음 100개의 항목을 검색하는 방법을 보여 줍니다.

참고 vlvResp는 이전에 서버에서 반환한 ADS_VLV 구조를 나타냅니다.
 
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;

요구 사항

   
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
머리글 iads.h

참고 항목

ADS_SEARCHPREF_ENUM

VLV를 사용하여 검색하는 방법

IDirectorySearch