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.
 
 
 
 
 
 

161 lines
4.5 KiB

// SAFRemoteDesktopManager.h : Declaration of the CSAFRemoteDesktopManager
#ifndef __SAFREMOTEDESKTOPMANAGER_H_
#define __SAFREMOTEDESKTOPMANAGER_H_
#include "resource.h" // main symbols
#define BUF_SZ 512
/////////////////////////////////////////////////////////////////////////////
// CSAFRemoteDesktopManager
class ATL_NO_VTABLE CSAFRemoteDesktopManager :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSAFRemoteDesktopManager, &CLSID_SAFRemoteDesktopManager>,
public IDispatchImpl<ISAFRemoteDesktopManager, &IID_ISAFRemoteDesktopManager, &LIBID_ISAFRDMLib>
{
public:
CSAFRemoteDesktopManager()
{
WCHAR *lpBuf=NULL;
DWORD dwCnt;
WCHAR buf1[BUF_SZ];
m_bstrSupportEngineer = L"";
dwCnt = GetEnvironmentVariable(L"PCHUSERBLOB", buf1, BUF_SZ);
if (!dwCnt)
m_bstruserSupportBlob = L"";
else if (dwCnt <= BUF_SZ)
m_bstruserSupportBlob = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHUSERBLOB", lpBuf, dwCnt);
m_bstruserSupportBlob = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
dwCnt = GetEnvironmentVariable(L"PCHEXPERTBLOB", buf1, BUF_SZ);
if (!dwCnt)
m_bstrexpertSupportBlob = L"";
else if (dwCnt <= BUF_SZ)
m_bstrexpertSupportBlob = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHEXPERTBLOB", lpBuf, dwCnt);
m_bstrexpertSupportBlob = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
dwCnt = GetEnvironmentVariable(L"PCHCONNECTPARMS", buf1, BUF_SZ);
if (!dwCnt)
m_bstrRCTicket = L"";
else if (dwCnt <= BUF_SZ)
m_bstrRCTicket = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHCONNECTPARMS", lpBuf, dwCnt);
m_bstrRCTicket = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
dwCnt = GetEnvironmentVariable(L"PCHSESSIONENUM", buf1, BUF_SZ);
if (!dwCnt)
m_bstrSessionEnum = L"";
else if (dwCnt <= BUF_SZ)
m_bstrSessionEnum = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHSESSIONENUM", lpBuf, dwCnt);
m_bstrSessionEnum = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
dwCnt = GetEnvironmentVariable(L"PCHEVENTNAME", buf1, BUF_SZ);
if (!dwCnt)
m_bstrEventName = L"";
else if (dwCnt <= BUF_SZ)
m_bstrEventName = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHEVENTNAME", lpBuf, dwCnt);
m_bstrEventName = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
dwCnt = GetEnvironmentVariable(L"PCHMutexName", buf1, BUF_SZ);
if (!dwCnt)
m_bstrMutexName = L"";
else if (dwCnt <= BUF_SZ)
m_bstrMutexName = buf1;
else
{
lpBuf = (WCHAR *)LocalAlloc(LPTR, dwCnt * sizeof(WCHAR));
GetEnvironmentVariable(L"PCHMutexName", lpBuf, dwCnt);
m_bstrMutexName = lpBuf;
LocalFree(lpBuf);
lpBuf = NULL;
}
m_boolConnectionValid = TRUE;
m_boolDesktopUnknown = FALSE;
m_boolAcceptReserved = FALSE;
}
~CSAFRemoteDesktopManager()
{
m_bstrRCTicket.Empty();
m_bstrSupportEngineer.Empty();
m_bstruserSupportBlob.Empty();
m_bstrexpertSupportBlob.Empty();
m_bstrSessionEnum.Empty();
m_bstrEventName.Empty();
m_bstrMutexName.Empty();
}
DECLARE_REGISTRY_RESOURCEID(IDR_SAFREMOTEDESKTOPMANAGER)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSAFRemoteDesktopManager)
COM_INTERFACE_ENTRY(ISAFRemoteDesktopManager)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// ISAFRemoteDesktopManager
public:
STDMETHOD(get_userHelpBlob)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_expertHelpBlob)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_SupportEngineer)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_DesktopUnknown)(/*[out, retval]*/ BOOL *pVal);
STDMETHOD(get_RCTicket)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(Aborted)(/*[in]*/ BSTR Val);
STDMETHOD(Rejected)();
STDMETHOD(Accepted)();
STDMETHOD(ReserveAcceptedLock)();
STDMETHOD(SwitchDesktopMode)(/*[in]*/ int Mode, /*[in]*/ int nRAType);
private:
CComBSTR m_bstrMutexName;
CComBSTR m_bstrEventName;
CComBSTR m_bstrSessionEnum;
CComBSTR m_bstrSupportEngineer;
CComBSTR m_bstruserSupportBlob;
CComBSTR m_bstrexpertSupportBlob;
CComBSTR m_bstrRCTicket;
BOOL m_boolConnectionValid;
BOOL m_boolDesktopUnknown;
BOOL m_boolAcceptReserved;
// HRESULT SignalResolver(BOOL yn);
};
#endif //__SAFREMOTEDESKTOPMANAGER_H_