ADS_VLV 構造体 (iads.h)

ADS_VLV構造には、仮想リスト ビュー (VLV) 検索を実行するために使用されるメタデータが含まれています。 この構造は、2 つの役割を果たします。 最初に、サーバーに送信される検索設定を指定します。 次に、サーバーから 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 で終わる Unicode 文字列。 このパラメーターに NULL 以外の値が含まれている場合、サーバーは dwOffset で指定された値を無視し、リストの並べ替え順序に基づいて、プライマリ並べ替えキーの値が指定した文字列以上の最初のターゲット エントリを検索します。

dwContextIDLength

省略可能。 コンテキスト識別子の長さを示すパラメーター。 入力時に lpContextID でコンテキスト識別子を渡す場合は、識別子のサイズをバイト単位で設定する必要があります。 それ以外の場合は、0 に設定する必要があります。 出力時に lpContextIDNULL 以外の値が含まれている場合、サーバーから返されるコンテキスト ID の長さをバイト単位で示します。

lpContextID

省略可能。 サーバーによって生成されたコンテキスト識別子を示します。 このパラメーターは、クライアントに送信できます。 クライアントがこのパラメーターを受け取った場合は、同じリストに関連する後続の要求で変更されずに返されます。 この相互作用により、サーバーのパフォーマンスと有効性が向上する可能性があります。 コンテキスト識別子をサーバーに渡さない場合は、このメンバーを NULL 値に設定する必要があります。 出力時に、このメンバーに NULL 以外の値が含まれている場合、これはサーバーによって返されるコンテキスト ID を指します。

解説

dwContentCountdwOffset によって VLV を設定するには、pszTargetNULL 値に設定する必要もあります。 pszTarget にNULL 以外の値が含まれている場合は、オフセットとして使用されます。それ以外の場合は、オフセットとして 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
Header iads.h

関連項目

ADS_SEARCHPREF_ENUM

VLV を使用して検索する方法

IDirectorySearch