Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

115 lines
3.7 KiB

//--------------------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation, 1996
//
// Description:
//
// Microsoft Internet LDAP Client private header
//
// History:
// davidsan 05/08/96 Created
//
//--------------------------------------------------------------------------------------------
#ifndef _LDAPCLIP_H
#define _LDAPCLIP_H
// transaction type
const DWORD xtypeNil = 0;
const DWORD xtypeBind = 1;
const DWORD xtypeSearch = 2;
const DWORD xtypeUnbind = 3;
const DWORD xtypeAbandon = 4;
const DWORD xtypeBindSSPINegotiate = 5;
const DWORD xtypeBindSSPIResponse = 6;
const DWORD xtypeModify = 7;
const DWORD xtypeAdd = 8;
const DWORD xtypeModifyRDN = 9;
const DWORD xtypeCompare = 10;
const DWORD xtypeDelete = 11;
class CLdapClient : public ILdapClient
{
public:
CLdapClient(int iVerLdap);
~CLdapClient();
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR *ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP HrConnect(char *szServer, USHORT usPort);
STDMETHODIMP HrDisconnect(void);
STDMETHODIMP HrIsConnected(void);
STDMETHODIMP HrBindSimple(char *szDN, char *szPass, PXID pxid);
STDMETHODIMP HrGetBindResponse(XID xid, DWORD timeout);
STDMETHODIMP HrUnbind(void);
STDMETHODIMP HrBindSSPI(char *szDN, char *szUser, char *szPass, BOOL fPrompt, DWORD timeout);
STDMETHODIMP HrSendSSPINegotiate(char *szDN, char *szUser, char *szPass, BOOL fPrompt, PXID pxid);
STDMETHODIMP HrGetSSPIChallenge(XID xid, BYTE *pbBuf, int cbBuf, int *pcbChallenge, DWORD timeout);
STDMETHODIMP HrSendSSPIResponse(BYTE *pbChallenge, int cbChallenge, PXID pxid);
STDMETHODIMP HrSearch(PSP psp, PXID pxid);
STDMETHODIMP HrGetSearchResponse(XID xid, DWORD timeout, POBJ *ppobj);
STDMETHODIMP HrFreePobjList(POBJ pobj);
STDMETHODIMP HrModify(char *szDN, PMOD pmod, PXID pxid);
STDMETHODIMP HrGetModifyResponse(XID xid, DWORD timeout);
STDMETHODIMP HrAdd(char *szDN, PATTR pattr, PXID pxid);
STDMETHODIMP HrGetAddResponse(XID xid, DWORD timeout);
STDMETHODIMP HrDelete(char *szDN, PXID pxid);
STDMETHODIMP HrGetDeleteResponse(XID xid, DWORD timeout);
STDMETHODIMP HrModifyRDN(char *szDN, char *szNewRDN, BOOL fDeleteOldRDN, PXID pxid);
STDMETHODIMP HrGetModifyRDNResponse(XID xid, DWORD timeout);
STDMETHODIMP HrCompare(char *szDN, char *szAttrib, char *szValue, PXID pxid);
STDMETHODIMP HrGetCompareResponse(XID xid, DWORD timeout);
STDMETHODIMP HrCancelXid(XID xid);
protected:
friend void ReceiveData(PVOID, PVOID, int, int *);
void ReceiveData(PVOID pv, int cb, int *pcbReceived);
private:
HRESULT HrEncodeFilter(LBER *plber, PFILTER pfilter);
HRESULT HrEncodePattr(LBER *plber, PATTR pattr);
HRESULT HrEncodePmod(LBER *plber, PMOD pmod);
HRESULT HrWaitForPxd(PXD pxd, DWORD timeout, BOOL *pfDel);
HRESULT HrGetSimpleResponse(XID xid, DWORD xtype, ULONG ulTagResult, DWORD timeout);
HRESULT HrFromLdapResult(int iResult);
CRITICAL_SECTION m_cs;
CRITICAL_SECTION m_csRef;
PSOCK m_psock;
BOOL m_fConnected;
ULONG m_cRef;
int m_iVerLdap;
char m_szServer[MAX_PATH];
// SSPI stuff
HRESULT HrGetCredentials(char *szUser, char *szPass);
HRESULT HrSendBindMsg(XID xid, char *szDN, int iAuth, void *pv, int cb);
CredHandle m_hCred;
CtxtHandle m_hCtxt;
BOOL m_fHasCred;
BOOL m_fHasCtxt;
};
#define VERIFY(fncall) \
if (FAILED(hr = fncall)) \
{ \
Assert(FALSE); \
goto LBail; \
}
#endif // _LDAPCLIP_H