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.
|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
xpprov.cpp
Abstract:
This module contains the CXPProvider class implementation.
Author:
Wesley Witt (wesw) 13-Aug-1996
--*/
#define INITGUID
#define USES_IID_IXPProvider
#define USES_IID_IXPLogon
#define USES_IID_IMAPIStatus
#define USES_IID_IMAPIProp
#define USES_IID_IMAPIPropData
#define USES_IID_IMAPIControl
#define USES_IID_IMAPIContainer
#define USES_IID_IMAPIFolder
#define USES_IID_IMAPITableData
#define USES_IID_IStreamDocfile
#define USES_PS_PUBLIC_STRINGS
#include "faxxp.h"
#include "debugex.h"
#pragma hdrstop
CXPProvider::CXPProvider( HINSTANCE hInst )
/*++
Routine Description:
Constructor of the object. Parameters are passed to initialize the data members with the appropiate values.
Arguments:
hInst - Handle to instance of this XP DLL
Return Value:
None.
--*/
{ m_hInstance = hInst; m_cRef = 1; InitializeCriticalSection( &m_csTransport ); }
CXPProvider::~CXPProvider()
/*++
Routine Description:
Close down and release resources and libraries.
Arguments:
None.
Return Value:
None.
--*/
{ m_hInstance = NULL; DeleteCriticalSection( &m_csTransport ); }
STDMETHODIMP CXPProvider::QueryInterface( REFIID riid, LPVOID * ppvObj )
/*++
Routine Description:
Returns a pointer to a interface requested if the interface is supported and implemented by this object. If it is not supported, it returns NULL
Arguments:
Refer to MAPI Documentation on this method.
Return Value:
An HRESULT.
--*/
{ *ppvObj = NULL; if (riid == IID_IXPProvider || riid == IID_IUnknown) { *ppvObj = (LPVOID)this; AddRef(); return S_OK; } return E_NOINTERFACE; }
STDMETHODIMP CXPProvider::Shutdown( ULONG * pulFlags )
/*++
Routine Description:
Stub method.
Arguments:
Refer to MAPI Documentation on this method.
Return Value:
An HRESULT.
--*/
{ DBG_ENTER(TEXT("CXPProvider::Shutdown")); return S_OK; }
STDMETHODIMP CXPProvider::TransportLogon( LPMAPISUP pSupObj, ULONG ulUIParam, LPTSTR pszProfileName, ULONG *pulFlags, LPMAPIERROR *ppMAPIError, LPXPLOGON *ppXPLogon )
/*++
Routine Description:
Display the logon dialog to show the options saved in the profile for this provider and allow changes to it. Save new configuration settings back in the profile. Create a new CXPLogon object and return it to the spooler. Also, initialize the properties array for each address type handled by this transport. Check all the flags and return them to the spooler
Arguments:
Refer to MAPI Documentation on this method.
Return Value:
An HRESULT.
--*/
{ HRESULT hResult = S_OK; DBG_ENTER(TEXT("CXPProvider::TransportLogon"),hResult);
CXPLogon *LogonObj = new CXPLogon( m_hInstance, pSupObj, pszProfileName ); if (!LogonObj) { hResult = E_OUTOFMEMORY; goto exit; }
hResult = LogonObj->InitializeStatusRow(0);
if(HR_SUCCEEDED(hResult)) { *ppXPLogon = LogonObj; } else { delete LogonObj; }
exit: return hResult; }
STDMETHODIMP_(ULONG) CXPProvider::AddRef()
/*++
Routine Description:
Arguments:
Refer to MAPI Documentation on this method.
Return Value:
An HRESULT.
--*/
{ ++m_cRef; return m_cRef; }
STDMETHODIMP_(ULONG) CXPProvider::Release()
/*++
Routine Description:
Arguments:
Refer to MAPI Documentation on this method.
Return Value:
An HRESULT.
--*/
{ ULONG ulCount = --m_cRef; if (!ulCount) { delete this; }
return ulCount; }
|