253 lines
6.1 KiB
C++
253 lines
6.1 KiB
C++
//---------------------------------------------------------------------------
|
|
//
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1995
|
|
//
|
|
// File: srchutil.hxx
|
|
//
|
|
// Contents: Microsoft ADs LDAP Provider search utility functions
|
|
//
|
|
//
|
|
// History: 03-02-97 ShankSh Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef _SRCHUTIL_H_INCLUDED_
|
|
#define _SRCHUTIL_H_INCLUDED_
|
|
|
|
|
|
typedef struct _ldap_search_pref {
|
|
BOOL _fAttrsOnly;
|
|
BOOL _fAsynchronous;
|
|
DWORD _dwSearchScope;
|
|
DWORD _dwSizeLimit;
|
|
DWORD _dwTimeLimit;
|
|
DWORD _dwPagedTimeLimit;
|
|
struct l_timeval _timeout;
|
|
DWORD _dwPageSize;
|
|
DWORD _dwDerefAliases;
|
|
DWORD _dwChaseReferrals;
|
|
PLDAPSortKey _pSortKeys;
|
|
DWORD _nSortKeys;
|
|
BOOL _fCacheResults;
|
|
BOOL _fDirSync;
|
|
PADS_PROV_SPECIFIC _pProvSpecific;
|
|
BOOL _fTombStone;
|
|
PLDAPVLVInfo _pVLVInfo; // VLV search
|
|
LPWSTR _pAttribScoped; // attribute-scoped query
|
|
BOOL _fSecurityDescriptorControl; // security descriptor retrieval
|
|
SECURITY_INFORMATION _SecurityDescriptorMask; // ""
|
|
}LDAP_SEARCH_PREF, *PLDAP_SEARCH_PREF;
|
|
|
|
//
|
|
// LDAP search structure; Contains all the information pertaining to the
|
|
// current search
|
|
//
|
|
|
|
typedef struct _ldap_searchinfo {
|
|
ADS_LDP *_pConnection;
|
|
LPWSTR _pszADsPathContext;
|
|
LPWSTR _pszLdapServer;
|
|
LPWSTR _pszBindContextDn;
|
|
LPWSTR _pszSearchFilter;
|
|
LPWSTR *_ppszAttrs;
|
|
LPWSTR _pszAttrNameBuffer;
|
|
LDAPMessage **_pSearchResults;
|
|
DWORD _cSearchResults;
|
|
DWORD _dwCurrResult;
|
|
DWORD _dwMaxResultGot;
|
|
ULONG _currMsgId;
|
|
LDAPMessage *_pCurrentRow;
|
|
void *_pFirstAttr;
|
|
LDAP_SEARCH_PREF _SearchPref;
|
|
PLDAPSearch _hPagedSearch;
|
|
DWORD _dwPort;
|
|
PLDAPControl *_ServerControls;
|
|
PLDAPControl *_ClientControls;
|
|
HRESULT _hrLastSearch;
|
|
BOOL _fAbandon;
|
|
PBERVAL _pBerVal;
|
|
DWORD _dwVLVOffset; // VirtualListViewResponse
|
|
DWORD _dwVLVCount; // ""
|
|
PBERVAL _pVLVContextID; // ""
|
|
PBERVAL _pBerValAttribScoped; // attribute-scoped query control value
|
|
|
|
//
|
|
// We use bitfields to store the booleans to try to cut down on the size
|
|
// of this structure. Keep them together to permit the compiler to pack them
|
|
// into the minimum space without added padding.
|
|
//
|
|
BOOL _fLastResult:1;
|
|
BOOL _fLastPage:1;
|
|
BOOL _fBefFirstRow:1;
|
|
BOOL _fADsPathPresent:1;
|
|
BOOL _fADsPathReturned:1;
|
|
BOOL _fADsPathOnly:1; // TRUE = user requested only ADsPath attrib
|
|
BOOL _fMoreDirSync:1;
|
|
BOOL _fNonFatalErrors:1; // TRUE = non-fatal error occurred, need to warn
|
|
|
|
}LDAP_SEARCHINFO, *PLDAP_SEARCHINFO;
|
|
|
|
|
|
HRESULT
|
|
ADsSetSearchPreference(
|
|
IN PADS_SEARCHPREF_INFO pSearchPrefs,
|
|
IN DWORD dwNumPrefs,
|
|
OUT LDAP_SEARCH_PREF * pLdapPref,
|
|
IN LPWSTR pszLDAPServer,
|
|
IN LPWSTR pszLDAPDn,
|
|
IN CCredentials& Credentials,
|
|
IN DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
ADsExecuteSearch(
|
|
IN LDAP_SEARCH_PREF LdapPref,
|
|
IN LPWSTR pszADsPath,
|
|
IN LPWSTR pszLdapServer,
|
|
IN LPWSTR pszLdapDn,
|
|
IN LPWSTR pszSearchFilter,
|
|
IN LPWSTR * pAttributeNames,
|
|
IN DWORD dwNumberAttributes,
|
|
OUT PADS_SEARCH_HANDLE phSearchHandle
|
|
);
|
|
|
|
HRESULT
|
|
ADsAbandonSearch(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle
|
|
);
|
|
|
|
HRESULT
|
|
ADsCloseSearchHandle (
|
|
IN ADS_SEARCH_HANDLE hSearchHandle
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetFirstRow(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
IN CCredentials& CCredentials
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetNextRow(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
IN CCredentials& CCredentials
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetPreviousRow(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
IN CCredentials& CCredentials
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetColumn(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
IN LPWSTR pszColumnName,
|
|
IN CCredentials& CCredentials,
|
|
DWORD dwPort,
|
|
OUT PADS_SEARCH_COLUMN pColumn
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetNextColumnName(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
OUT LPWSTR * ppszColumnName
|
|
);
|
|
|
|
HRESULT
|
|
ADsFreeColumn(
|
|
IN PADS_SEARCH_COLUMN pColumn
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetResults(
|
|
IN PLDAP_SEARCHINFO phSearchInfo
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetMoreResults(
|
|
IN PLDAP_SEARCHINFO phSearchInfo
|
|
);
|
|
|
|
HRESULT
|
|
AddSearchControls(
|
|
PLDAP_SEARCHINFO phSearchInfo,
|
|
CCredentials& Credentials
|
|
);
|
|
|
|
void
|
|
FreeSortKeys(
|
|
IN PLDAPSortKey pSortKeys,
|
|
IN DWORD dwSortKeys
|
|
);
|
|
|
|
HRESULT
|
|
CopyLDAPVLVInfo(
|
|
PLDAPVLVInfo pVLVInfoSource,
|
|
PLDAPVLVInfo *ppVLVInfoTarget
|
|
);
|
|
|
|
void
|
|
FreeLDAPVLVInfo(
|
|
IN PLDAPVLVInfo pVLVInfo
|
|
);
|
|
|
|
HRESULT
|
|
StoreVLVInfo(
|
|
LDAPMessage *pLDAPMsg,
|
|
PLDAP_SEARCHINFO phSearchInfo
|
|
);
|
|
|
|
HRESULT
|
|
StoreAttribScopedInfo(
|
|
LDAPMessage *pLDAPMsg,
|
|
PLDAP_SEARCHINFO phSearchInfo
|
|
);
|
|
|
|
HRESULT
|
|
StoreDirSyncCookie(
|
|
IN LDAPMessage *pLDAPMsg,
|
|
IN PLDAP_SEARCHINFO phSearchInfo
|
|
);
|
|
|
|
HRESULT
|
|
BerEncodeReplicationCookie(
|
|
PBYTE pCookie,
|
|
DWORD dwLen,
|
|
PBERVAL *ppBerVal
|
|
);
|
|
|
|
HRESULT
|
|
BerEncodeAttribScopedControlValue(
|
|
LPCWSTR pAttribScoped,
|
|
PBERVAL *ppBerVal
|
|
);
|
|
|
|
HRESULT
|
|
ADsGetMoreResultsDirSync(
|
|
IN PLDAP_SEARCHINFO phSearchInfo,
|
|
IN CCredentials& Credentials
|
|
);
|
|
|
|
//
|
|
// Helper routine to initialize search preferences.
|
|
//
|
|
void
|
|
LdapInitializeSearchPreferences(
|
|
LDAP_SEARCH_PREF *pSearchPrefs,
|
|
BOOL fCacheResults
|
|
);
|
|
|
|
//
|
|
// This routine is used in Umi search support.
|
|
//
|
|
HRESULT
|
|
ADsHelperGetCurrentRowMessage(
|
|
IN ADS_SEARCH_HANDLE hSearchHandle,
|
|
OUT PADSLDP *ppAdsLdp,
|
|
OUT LDAPMessage **ppLdapMsg
|
|
);
|
|
#endif // _SRCHUTIL_H_INCLUDED_
|