|
|
//---------------------------------------------------------------------------
//
//
// 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_
|