|
|
/*++
Copyright (C) Microsoft Corporation, 1997 - 1999
Module Name:
cimplogn.cxx
Abstract:
The core implementation for the ISensLogon interface.
Author:
Gopal Parupudi <GopalP>
[Notes:]
optional-notes
Revision History:
GopalP 11/17/1997 Start.
--*/
#include <common.hxx>
#include <ole2.h>
#include <oleauto.h>
#include <tchar.h>
#include "sinkcomn.hxx"
#include "cimplogn.hxx"
#include "sensevts.h"
extern ITypeInfo *gpITypeInfoLogon; extern ITypeInfo *gpITypeInfoLogon2;
//
// Constructors and Destructors
//
CImpISensLogon::CImpISensLogon( void ) : m_cRef(0L), m_pfnDestroy(NULL) {
}
CImpISensLogon::CImpISensLogon( LPFNDESTROYED pfnDestroy ) : m_cRef(0L), m_pfnDestroy(pfnDestroy) {
}
CImpISensLogon::~CImpISensLogon( void ) { // Empty destructor
}
//
// Standard QueryInterface
//
STDMETHODIMP CImpISensLogon::QueryInterface( REFIID riid, LPVOID *ppv ) { DebugTraceGuid("CImpISensLogon::QueryInterface()", riid);
HRESULT hr = S_OK;
*ppv = NULL; // To handle failure cases
// IUnknown
if (IsEqualIID(riid, IID_IUnknown)) { *ppv = (LPUNKNOWN) this; } else // IDispatch
if (IsEqualIID(riid, IID_IDispatch)) { *ppv = (IDispatch *) this; } else // ISensLogon
if (IsEqualIID(riid, IID_ISensLogon)) { *ppv = (ISensLogon *) this; } else { hr = E_NOINTERFACE; }
if (NULL != *ppv) { ((LPUNKNOWN)*ppv)->AddRef(); }
return hr; }
//
// Standard AddRef and Release
//
STDMETHODIMP_(ULONG) CImpISensLogon::AddRef( void ) { return InterlockedIncrement((PLONG) &m_cRef); }
STDMETHODIMP_(ULONG) CImpISensLogon::Release( void ) { ULONG cRefT;
cRefT = InterlockedDecrement((PLONG) &m_cRef);
if (0 == m_cRef) { // Invoke the callback function.
if (NULL != m_pfnDestroy) { (*m_pfnDestroy)(); } delete this; }
return cRefT; }
//
// IDispatch member function implementations.
//
STDMETHODIMP CImpISensLogon::GetTypeInfoCount( UINT *pCountITypeInfo ) { SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon::GetTypeInfoCount() called.\n"))); // We implement GetTypeInfo, so return 1.
*pCountITypeInfo = 1;
return NOERROR;
}
STDMETHODIMP CImpISensLogon::GetTypeInfo( UINT iTypeInfo, LCID lcid, ITypeInfo **ppITypeInfo ) { SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon::GetTypeInfo() called.\n"))); *ppITypeInfo = NULL;
if (iTypeInfo != 0) { return DISP_E_BADINDEX; }
// Call AddRef and return the pointer.
gpITypeInfoLogon->AddRef();
*ppITypeInfo = gpITypeInfoLogon;
return S_OK; }
STDMETHODIMP CImpISensLogon::GetIDsOfNames( REFIID riid, LPOLESTR *arrNames, UINT cNames, LCID lcid, DISPID *arrDispIDs) { HRESULT hr;
SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon::GetIDsOfNames() called.\n")));
if (riid != IID_NULL) { return DISP_E_UNKNOWNINTERFACE; }
hr = gpITypeInfoLogon->GetIDsOfNames( arrNames, cNames, arrDispIDs );
return hr; }
STDMETHODIMP CImpISensLogon::Invoke( DISPID dispID, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExecpInfo, UINT *puArgErr ) { HRESULT hr;
SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon::Invoke() called.\n")));
if (riid != IID_NULL) { return DISP_E_UNKNOWNINTERFACE; }
hr = gpITypeInfoLogon->Invoke( (IDispatch*) this, dispID, wFlags, pDispParams, pvarResult, pExecpInfo, puArgErr ); SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon::Invoke() returned 0x%x\n"), hr));
return hr; }
STDMETHODIMP CImpISensLogon::Logon( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::Logon() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::Logoff( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::Logoff() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::StartShell( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::StartShell() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::DisplayLock( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::DisplayLock() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::DisplayUnlock( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::DisplayUnlock() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::StartScreenSaver( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::StartScreenSaver() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon::StopScreenSaver( BSTR bstrUserName ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon::StopScreenSaver() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
//
// ISensLogon2 Implementation
//
//
// Constructors and Destructors
//
CImpISensLogon2::CImpISensLogon2( void ) : m_cRef(0L), m_pfnDestroy(NULL) {
}
CImpISensLogon2::CImpISensLogon2( LPFNDESTROYED pfnDestroy ) : m_cRef(0L), m_pfnDestroy(pfnDestroy) {
}
CImpISensLogon2::~CImpISensLogon2( void ) { // Empty destructor
}
//
// Standard QueryInterface
//
STDMETHODIMP CImpISensLogon2::QueryInterface( REFIID riid, LPVOID *ppv ) { DebugTraceGuid("CImpISensLogon2::QueryInterface()", riid);
HRESULT hr = S_OK;
*ppv = NULL; // To handle failure cases
// IUnknown
if (IsEqualIID(riid, IID_IUnknown)) { *ppv = (LPUNKNOWN) this; } else // IDispatch
if (IsEqualIID(riid, IID_IDispatch)) { *ppv = (IDispatch *) this; } else // ISensLogon
if (IsEqualIID(riid, IID_ISensLogon2)) { *ppv = (ISensLogon2 *) this; } else { hr = E_NOINTERFACE; }
if (NULL != *ppv) { ((LPUNKNOWN)*ppv)->AddRef(); }
return hr; }
//
// Standard AddRef and Release
//
STDMETHODIMP_(ULONG) CImpISensLogon2::AddRef( void ) { return InterlockedIncrement((PLONG) &m_cRef); }
STDMETHODIMP_(ULONG) CImpISensLogon2::Release( void ) { ULONG cRefT;
cRefT = InterlockedDecrement((PLONG) &m_cRef);
if (0 == m_cRef) { // Invoke the callback function.
if (NULL != m_pfnDestroy) { (*m_pfnDestroy)(); } delete this; }
return cRefT; }
//
// IDispatch member function implementations.
//
STDMETHODIMP CImpISensLogon2::GetTypeInfoCount( UINT *pCountITypeInfo ) { SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon2::GetTypeInfoCount() called.\n"))); // We implement GetTypeInfo, so return 1.
*pCountITypeInfo = 1;
return NOERROR;
}
STDMETHODIMP CImpISensLogon2::GetTypeInfo( UINT iTypeInfo, LCID lcid, ITypeInfo **ppITypeInfo ) { SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon2::GetTypeInfo() called.\n"))); *ppITypeInfo = NULL;
if (iTypeInfo != 0) { return DISP_E_BADINDEX; }
// Call AddRef and return the pointer.
gpITypeInfoLogon2->AddRef();
*ppITypeInfo = gpITypeInfoLogon2;
return S_OK; }
STDMETHODIMP CImpISensLogon2::GetIDsOfNames( REFIID riid, LPOLESTR *arrNames, UINT cNames, LCID lcid, DISPID *arrDispIDs) { HRESULT hr;
SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon2::GetIDsOfNames() called.\n")));
if (riid != IID_NULL) { return DISP_E_UNKNOWNINTERFACE; }
hr = gpITypeInfoLogon2->GetIDsOfNames( arrNames, cNames, arrDispIDs );
return hr; }
STDMETHODIMP CImpISensLogon2::Invoke( DISPID dispID, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExecpInfo, UINT *puArgErr ) { HRESULT hr;
SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon2::Invoke() called.\n")));
if (riid != IID_NULL) { return DISP_E_UNKNOWNINTERFACE; }
hr = gpITypeInfoLogon2->Invoke( (IDispatch*) this, dispID, wFlags, pDispParams, pvarResult, pExecpInfo, puArgErr ); SensPrint(SENS_INFO, (SENS_STRING("\t| CImpISensLogon2::Invoke() returned 0x%x\n"), hr));
return hr; }
STDMETHODIMP CImpISensLogon2::Logon( BSTR bstrUserName, DWORD dwSessionId ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon2::Logon() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING(" dwSessionId - %d\n"), dwSessionId)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon2::Logoff( BSTR bstrUserName, DWORD dwSessionId ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon2::Logoff() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING(" dwSessionId - %d\n"), dwSessionId)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon2::PostShell( BSTR bstrUserName, DWORD dwSessionId ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon2::PostShell() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING(" dwSessionId - %d\n"), dwSessionId)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon2::SessionDisconnect( BSTR bstrUserName, DWORD dwSessionId ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon2::SessionDisconnect() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING(" dwSessionId - %d\n"), dwSessionId)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
STDMETHODIMP CImpISensLogon2::SessionReconnect( BSTR bstrUserName, DWORD dwSessionId ) { SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); SensPrint(SENS_INFO, (SENS_STRING("CImpISensLogon2::SessionReconnect() called\n\n"))); SensPrintW(SENS_INFO, (SENS_BSTR(" bstrUserName - %s\n"), bstrUserName)); SensPrint(SENS_INFO, (SENS_STRING(" dwSessionId - %d\n"), dwSessionId)); SensPrint(SENS_INFO, (SENS_STRING("---------------------------------------------------------\n"))); return S_OK; }
|