windows-nt/Source/XPSP1/NT/net/ias/mmc/nap/connectiontoserver.h

201 lines
4.4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//////////////////////////////////////////////////////////////////////////////
/*++
Copyright (C) Microsoft Corporation, 1997 - 1999
Module Name:
ConectionToServer.h
Abstract:
Header file for class which manages connection to a remote server.
The connect action takes place in a worker thread.
See ConnectionToServer.cpp for implementation.
Revision History:
mmaguire 02/09/98 - created
byao 04/24/98 - Modified for NAPMMC.DLL (Remote Access Policies snap-in)
--*/
//////////////////////////////////////////////////////////////////////////////
#if !defined(_NAP_CONNECTION_TO_SERVER_H_)
#define _NAP_CONNECTION_TO_SERVER_H_
//////////////////////////////////////////////////////////////////////////////
// BEGIN INCLUDES
//
// where we can find what this class derives from:
//
#include "DialogWithWorkerThread.h"
//
//
// where we can find what this class has or uses:
//
#include "sdoias.h"
//
// END INCLUDES
//////////////////////////////////////////////////////////////////////////////
// return value for connection
#define CONNECT_NO_ERROR 0
#define CONNECT_SERVER_NOT_SUPPORTED 1
#define CONNECT_FAILED (-1)
typedef
enum _TAG_CONNECTION_STATUS
{
NO_CONNECTION_ATTEMPTED = 0,
CONNECTING,
CONNECTED,
CONNECTION_ATTEMPT_FAILED,
CONNECTION_INTERRUPTED,
UNKNOWN
} CONNECTION_STATUS;
class CMachineNode;
class CLoggingMachineNode;
class CConnectionToServer : public CDialogWithWorkerThread<CConnectionToServer>
{
public:
CConnectionToServer( CMachineNode *pServerNode,
BSTR bstrServerAddress,
BOOL fExtendingIAS );
~CConnectionToServer( void );
public:
// This is the ID of the dialog resource we want for this class.
// An enum is used here because the correct value of
// IDD must be initialized before the base class's constructor is called
enum { IDD = IDD_CONNECT_TO_MACHINE };
BEGIN_MSG_MAP(CConnectionToServer)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER( IDCANCEL, OnCancel )
CHAIN_MSG_MAP(CDialogWithWorkerThread<CConnectionToServer>)
END_MSG_MAP()
LRESULT OnCancel(
UINT uMsg
, WPARAM wParam
, HWND hwnd
, BOOL& bHandled
);
LRESULT OnInitDialog(
UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL& bHandled
);
LRESULT OnReceiveThreadMessage(
UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL& bHandled
);
void CleanupMachineRelated( void )
{
m_pMachineNode = NULL;
}
CONNECTION_STATUS GetConnectionStatus( void );
HRESULT GetSdoService( ISdo **ppSdo );
// happening in the main thread
HRESULT ReloadSdo(ISdo** ppSdoService, ISdoDictionaryOld **ppSdoDictionaryOld);
HRESULT GetSdoDictionaryOld( ISdoDictionaryOld **ppSdoDictionaryOld );
DWORD DoWorkerThreadAction();
protected:
CONNECTION_STATUS m_ConnectionStatus;
// Pointer to stream into which the worker thread
// this class creates will marshal the Sdo interface pointer it gets.
LPSTREAM m_pStreamSdoMachineMarshal;
LPSTREAM m_pStreamSdoServiceMarshal;
LPSTREAM m_pStreamSdoDictionaryOldMarshal;
// SDO pointers for use in the main thread's context.
CComPtr<ISdo> m_spSdo;
CComPtr<ISdoDictionaryOld> m_spSdoDictionaryOld;
CComPtr<ISdoMachine> m_spSdoMachine;
//
CMachineNode* m_pMachineNode;
CComBSTR m_bstrServerAddress;
BOOL m_fExtendingIAS;
BOOL m_fDSAvailable; // is DS avilable for this machine?
// DS is only available for NT5 domain
void WriteTrace(char* info, HRESULT hr)
{
::CString str = info;
::CString str1;
str1.Format(str, hr);
TracePrintf(g_dwTraceHandle, str1);
};
//
// local computer name.
// We need this name to call ServerInfo->GetDomainInfo(), as well as showing
// it in connecting message
//
TCHAR m_szLocalComputerName[IAS_MAX_COMPUTERNAME_LENGTH];
};
class CLoggingConnectionToServer : public CConnectionToServer
{
public:
CLoggingConnectionToServer( CLoggingMachineNode * pServerNode,
BSTR bstrServerAddress,
BOOL fExtendingIAS );
~CLoggingConnectionToServer( void );
public:
BEGIN_MSG_MAP(CLoggingConnectionToServer)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
CHAIN_MSG_MAP(CConnectionToServer)
END_MSG_MAP()
LRESULT OnInitDialog(
UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL& bHandled
);
LRESULT OnReceiveThreadMessage(
UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL& bHandled
);
DWORD DoWorkerThreadAction();
private:
CLoggingMachineNode * m_pMachineNode;
};
#endif // _IAS_CONNECTION_TO_SERVER_H_