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.
 
 
 
 
 
 

105 lines
2.9 KiB

/*
IMSession.h
*/
#ifndef __IMSESSION__
#define __IMSESSION__
#include "resource.h"
#include "sessions.h"
#include "mdispid.h"
#include "wincrypt.h"
#include "statusdlg.h"
EXTERN_C const IID DIID_DMsgrSessionEvents;
EXTERN_C const IID DIID_DMsgrSessionManagerEvents;
EXTERN_C const IID LIBID_MsgrSessionManager;
class CIMSession;
#include "Shared.h"
#include "sessevnt.h"
#include "sessmgrevnt.h"
#define IDC_IMSession 100
class ATL_NO_VTABLE CIMSession :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CIMSession, &CLSID_IMSession>,
public IDispatchImpl<IIMSession, &IID_IIMSession, &LIBID_RCBDYCTLLib>
{
public:
CIMSession();
~CIMSession();
DECLARE_REGISTRY_RESOURCEID(IDR_IMSESSION)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CIMSession)
COM_INTERFACE_ENTRY(IIMSession)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
public:
STDMETHOD(put_OnSessionStatus)(/*[in]*/ IDispatch * pfn);
STDMETHOD(HSC_Invite)(IDispatch *pUser);
STDMETHOD(get_ReceivedUserTicket)(/*[out,retval]*/ BSTR* pNewTicket);
STDMETHOD(GetLaunchingSession)(LONG lID);
STDMETHOD(SendOutExpertTicket)(BSTR pbstrData);
STDMETHOD(ProcessContext)(BSTR pContext);
STDMETHOD(CloseRA)();
STDMETHOD(get_User)(IDispatch** ppVal);
STDMETHOD(Hook)(IMsgrSession*, HWND);
STDMETHOD(Notify)(int);
STDMETHOD(ContextDataProperty)(BSTR pName, BSTR* ppValue);
STDMETHOD(get_IsInviter)(BOOL* pVal);
STDMETHOD(UninitObjects)();
public:
IMsgrSessionManager* m_pSessMgr;
IMsgrSession* m_pSessObj;
IMsgrLock* m_pMsgrLockKey;
IDispatch* m_pInvitee;
CSessionMgrEvent* m_pSessionMgrEvent;
BOOL m_bIsHSC;
CComPtr<IDispatch> m_pfnSessionStatus;
private:
CComObject<CSessionEvent>* m_pSessionEvent;
CComBSTR m_bstrSalemTicket;
CComBSTR m_bstrContextData;
BOOL m_bIsInviter;
HCRYPTPROV m_hCryptProv;
HCRYPTKEY m_hPublicKey;
int m_iState;
DWORD GetExchangeRegValue();
BOOL m_bExchangeUser;
CStatusDlg m_StatusDlg;
public:
CComBSTR m_bstrExpertTicket;
HWND m_hWnd;
BOOL m_bLocked;
public:
HRESULT InitCSP(BOOL bGenPublicKey=TRUE);
HRESULT InitSessionEvent(IMsgrSession* pSessObj);
HRESULT DoSessionStatus(int);
HRESULT GetKeyExportString(HCRYPTKEY hKey, HCRYPTKEY hExKey, DWORD dwBlobType, BSTR* pBlob, DWORD *pdwCount);
HRESULT ExtractSalemTicket(BSTR pContext);
HRESULT BinaryToString(LPBYTE pBinBuf, DWORD dwLen, BSTR* pBlob, DWORD *pdwCount);
HRESULT StringToBinary(BSTR pBlob, DWORD dwCount, LPBYTE *ppBuf, DWORD* pdwLen);
HRESULT GenEncryptdNoviceBlob(BSTR pPublicKeyBlob, BSTR pSalemTicket, BSTR* pBlob);
HRESULT InviterSendSalemTicket(BSTR pContext);
HRESULT ProcessNotify(BSTR);
HRESULT OnLockResult(BOOL, LONG);
HRESULT OnLockChallenge(BSTR, LONG);
HRESULT Invite(IDispatch*);
};
#endif // __IMSession__