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.
972 lines
21 KiB
972 lines
21 KiB
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
FaxJobStatus.cpp
|
|
|
|
Abstract:
|
|
|
|
Implementation of CFaxJobStatus Class.
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG) Jun, 2000
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "stdafx.h"
|
|
#include "FaxComEx.h"
|
|
#include "FaxJobStatus.h"
|
|
|
|
//
|
|
//====================== GET JOB TYPE ===============================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_JobType(
|
|
FAX_JOB_TYPE_ENUM *pJobType
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_JobType
|
|
|
|
Routine description:
|
|
|
|
Return the Type of the Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pJobType [out] - Return Value of Job Type
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_JobType"), hr);
|
|
|
|
//
|
|
// Check that we can write to the given pointer
|
|
//
|
|
if (::IsBadWritePtr(pJobType, sizeof(FAX_JOB_TYPE_ENUM)))
|
|
{
|
|
//
|
|
// Got Bad Return Pointer
|
|
//
|
|
hr = E_POINTER;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr"), hr);
|
|
return hr;
|
|
}
|
|
|
|
*pJobType = m_JobType;
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET TRANSMISSION END ======================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_TransmissionEnd(
|
|
DATE *pdateTransmissionEnd
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_TransmissionEnd
|
|
|
|
Routine description:
|
|
|
|
Return Job's Transmission End
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
pdateTransmissionEnd [out] - pointer to the place to put the value
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_TransmissionEnd"), hr);
|
|
|
|
//
|
|
// Check that we can write to the given pointer
|
|
//
|
|
if (::IsBadWritePtr(pdateTransmissionEnd, sizeof(DATE)))
|
|
{
|
|
//
|
|
// Got Bad Ptr
|
|
//
|
|
hr = E_POINTER;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr()"), hr);
|
|
return hr;
|
|
}
|
|
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_TRANSMISSION_END_TIME)
|
|
{
|
|
//
|
|
// Transmission end time is available
|
|
//
|
|
hr = SystemTime2LocalDate(m_dtTransmissionEnd, pdateTransmissionEnd);
|
|
if (FAILED(hr))
|
|
{
|
|
//
|
|
// Failed to convert the system time to localized variant date
|
|
//
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// Transmission end time is not available yet
|
|
//
|
|
hr = HRESULT_FROM_WIN32 (ERROR_INVALID_DATA);
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_NO_END_TIME, IID_IFaxJobStatus, hr);
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//========================= GET TRANSMISSION START ===============================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_TransmissionStart(
|
|
DATE *pdateTransmissionStart
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_TransmissionStart
|
|
|
|
Routine description:
|
|
|
|
Return Time the Job is started to transmit
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pdateTransmissionStart [out] - pointer to place to put the Transmission Start
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_TransmissionStart"), hr);
|
|
|
|
//
|
|
// Check that we can write to the given pointer
|
|
//
|
|
if (::IsBadWritePtr(pdateTransmissionStart, sizeof(DATE)))
|
|
{
|
|
//
|
|
// Got Bad Ptr
|
|
//
|
|
hr = E_POINTER;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr()"), hr);
|
|
return hr;
|
|
}
|
|
|
|
hr = SystemTime2LocalDate(m_dtTransmissionStart, pdateTransmissionStart);
|
|
if (FAILED(hr))
|
|
{
|
|
//
|
|
// Failed to convert the system time to localized variant date
|
|
//
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//========================= GET SCHEDULED TIME ===============================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_ScheduledTime(
|
|
DATE *pdateScheduledTime
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_ScheduledTime
|
|
|
|
Routine description:
|
|
|
|
Return Time the Job is scheduled
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pdateScheduledTime [out] - pointer to place to put Scheduled Time
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_ScheduledTime"), hr);
|
|
|
|
//
|
|
// Check that we can write to the given pointer
|
|
//
|
|
if (::IsBadWritePtr(pdateScheduledTime, sizeof(DATE)))
|
|
{
|
|
//
|
|
// Got Bad Ptr
|
|
//
|
|
hr = E_POINTER;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr()"), hr);
|
|
return hr;
|
|
}
|
|
|
|
hr = SystemTime2LocalDate(m_dtScheduleTime, pdateScheduledTime);
|
|
if (FAILED(hr))
|
|
{
|
|
//
|
|
// Failed to convert the system time to localized variant date
|
|
//
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET AVAILABLE OPERATIONS ==================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_AvailableOperations(
|
|
FAX_JOB_OPERATIONS_ENUM *pAvailableOperations
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_AvailableOperations
|
|
|
|
Routine description:
|
|
|
|
The operations available for the Fax Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pAvailableOperations [out] - Pointer to the place to put the Bit-Wise Combination
|
|
of Available Operations on the current Fax Job
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_AvailableOperations"), hr);
|
|
|
|
//
|
|
// Check that we have got good Ptr
|
|
//
|
|
if (::IsBadWritePtr(pAvailableOperations, sizeof(FAX_JOB_OPERATIONS_ENUM)))
|
|
{
|
|
hr = E_POINTER;
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr(pAvailableOperations, sizeof(FAX_JOB_OPERATIONS_ENUM))"), hr);
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
|
|
*pAvailableOperations = FAX_JOB_OPERATIONS_ENUM(m_dwAvailableOperations);
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET PAGES ================================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_Pages(
|
|
long *plPages
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_Pages
|
|
|
|
Routine description:
|
|
|
|
Return total number of pages of the message
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
plPages [out] - Pointer to the place to put the value
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_Pages"), hr);
|
|
|
|
hr = GetLong(plPages, m_dwPageCount);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET CALLER ID ================================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_CallerId(
|
|
BSTR *pbstrCallerId
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_CallerId
|
|
|
|
Routine description:
|
|
|
|
Return the Caller Id of Job's Phone Call
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pbstrCallerId [out] - pointer to the place to put the Caller Id
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_CallerId"), hr);
|
|
|
|
hr = GetBstr(pbstrCallerId, m_bstrCallerId);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET ROUTING INFORMATION ======================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_RoutingInformation(
|
|
BSTR *pbstrRoutingInformation
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_RoutingInformation
|
|
|
|
Routine description:
|
|
|
|
Return the Routing Information of the Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pbstrRoutingInformation [out] - pointer to place to put Routing Information
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_RoutingInformation"), hr);
|
|
|
|
hr = GetBstr(pbstrRoutingInformation, m_bstrRoutingInfo);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET STATUS =============================================
|
|
//
|
|
HRESULT
|
|
CFaxJobStatus::get_Status(
|
|
FAX_JOB_STATUS_ENUM *pStatus
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_Status
|
|
|
|
Routine description:
|
|
|
|
The current Queue Status of the Fax Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pStatus [out] - Pointer to the place to put the Bit-Wise Combination of status
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_Status"), hr);
|
|
|
|
//
|
|
// Check that we have got good Ptr
|
|
//
|
|
if (::IsBadWritePtr(pStatus, sizeof(FAX_JOB_STATUS_ENUM)))
|
|
{
|
|
hr = E_POINTER;
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr(pStatus, sizeof(FAX_JOB_STATUS_ENUM))"), hr);
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
|
|
*pStatus = FAX_JOB_STATUS_ENUM(m_dwQueueStatus);
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET EXTENDED STATUS CODE ===============================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_ExtendedStatusCode(
|
|
FAX_JOB_EXTENDED_STATUS_ENUM *pExtendedStatusCode
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_ExtendedStatusCode
|
|
|
|
Routine description:
|
|
|
|
The Code of the Extended Status of the Fax Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pExtendedStatusCode [out] - Pointer to the place to put the status code
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_ExtendedStatusCode"), hr);
|
|
|
|
//
|
|
// Check that we can write to the given pointer
|
|
//
|
|
if (::IsBadWritePtr(pExtendedStatusCode, sizeof(FAX_JOB_EXTENDED_STATUS_ENUM)))
|
|
{
|
|
//
|
|
// Got Bad Return Pointer
|
|
//
|
|
hr = E_POINTER;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr"), hr);
|
|
return hr;
|
|
}
|
|
|
|
*pExtendedStatusCode = m_ExtendedStatusCode;
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET RETRIES =============================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_Retries(
|
|
long *plRetries
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_Retries
|
|
|
|
Routine description:
|
|
|
|
The number of unsuccessful retries of the Fax Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
plRetries [out] - Pointer to the place to put the number of Retries
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_Retries"), hr);
|
|
|
|
hr = GetLong(plRetries, m_dwRetries);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET TSID ================================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_TSID(
|
|
BSTR *pbstrTSID
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_TSID
|
|
|
|
Routine description:
|
|
|
|
Return Transmitting Station ID of the Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
pbstrTSID [out] - pointer to the place to put the TSID
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_TSID"), hr);
|
|
|
|
hr = GetBstr(pbstrTSID, m_bstrTSID);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET CSID ================================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_CSID(
|
|
BSTR *pbstrCSID
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_CSID
|
|
|
|
Routine description:
|
|
|
|
Return Called Station ID of the Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
pbstrCSID [out] - pointer to the place to put the CSID
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_CSID"), hr);
|
|
|
|
hr = GetBstr(pbstrCSID, m_bstrCSID);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET EXTENDED STATUS =======================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_ExtendedStatus(
|
|
BSTR *pbstrExtendedStatus
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_ExtendedStatus
|
|
|
|
Routine description:
|
|
|
|
Return String Description of the Extended Status of the Job
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
pbstrExtendedStatus [out] - pointer to the place to put the Extended Status
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_ExtendedStatus"), hr);
|
|
|
|
hr = GetBstr(pbstrExtendedStatus, m_bstrExtendedStatus);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET CURRENT PAGE =============================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_CurrentPage(
|
|
long *plCurrentPage
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_CurrentPage
|
|
|
|
Routine description:
|
|
|
|
Current Page number being received / sent
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
plCurrentPage [out] - Pointer to the place to put the Current Page Number
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_CurrentPage"), hr);
|
|
|
|
hr = GetLong(plCurrentPage, m_dwCurrentPage);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET DEVICE ID =============================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_DeviceId(
|
|
long *plDeviceId
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_DeviceId
|
|
|
|
Routine description:
|
|
|
|
The Device Id by which the Job is being sent / received.
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
plDeviceId [out] - Pointer to the place to put the Device Id
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_DeviceId"), hr);
|
|
|
|
hr = GetLong(plDeviceId, m_dwDeviceId);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//====================== GET SIZE ================================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::get_Size(
|
|
long *plSize
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::get_Size
|
|
|
|
Routine description:
|
|
|
|
Return Size ( in bytes ) of Fax Job's TIFF File
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
plSize [out] - Pointer to the place to put Size
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::get_Size"), hr);
|
|
|
|
hr = GetLong(plSize, m_dwSize);
|
|
if (FAILED(hr))
|
|
{
|
|
AtlReportError(CLSID_FaxJobStatus, GetErrorMsgId(hr), IID_IFaxJobStatus, hr);
|
|
return hr;
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//==================== INIT ===================================================
|
|
//
|
|
HRESULT
|
|
CFaxJobStatus::Init(
|
|
FAX_JOB_STATUS *pJobStatus
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::Init
|
|
|
|
Routine description:
|
|
|
|
Initialize the Job Status Class with the data from FAX_JOB_STATUS struct
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), May, 2000
|
|
|
|
Arguments:
|
|
|
|
pJobStatus [in] - Job Info
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
DBG_ENTER (TEXT("CFaxJobStatus::Init"), hr);
|
|
|
|
ATLASSERT(pJobStatus);
|
|
|
|
//
|
|
// dwQueueStatus cannot contain JS_DELETING value
|
|
//
|
|
ATLASSERT(0 == (pJobStatus->dwQueueStatus & JS_DELETING));
|
|
|
|
//
|
|
// Set Job Type
|
|
//
|
|
switch(pJobStatus->dwJobType)
|
|
{
|
|
case JT_SEND:
|
|
m_JobType = fjtSEND;
|
|
break;
|
|
|
|
case JT_RECEIVE:
|
|
m_JobType = fjtRECEIVE;
|
|
break;
|
|
|
|
case JT_ROUTING:
|
|
m_JobType = fjtROUTING;
|
|
break;
|
|
|
|
default:
|
|
CALL_FAIL(GENERAL_ERR,
|
|
_T("CFaxJobStatus::Init() got unknown/unsupported Job Type : %ld"),
|
|
pJobStatus->dwJobType);
|
|
|
|
//
|
|
// This is assert false
|
|
//
|
|
ATLASSERT(pJobStatus->dwJobType == JT_RECEIVE);
|
|
|
|
AtlReportError(CLSID_FaxJobStatus,
|
|
IDS_ERROR_INVALID_ARGUMENT,
|
|
IID_IFaxJobStatus,
|
|
hr);
|
|
hr = E_INVALIDARG;
|
|
return hr;
|
|
}
|
|
|
|
m_dwSize = pJobStatus->dwSize;
|
|
m_dwJobId = pJobStatus->dwJobID;
|
|
m_dwRetries = pJobStatus->dwRetries;
|
|
m_dwDeviceId = pJobStatus->dwDeviceID;
|
|
m_dwPageCount = pJobStatus->dwPageCount;
|
|
m_dwCurrentPage = pJobStatus->dwCurrentPage;
|
|
m_dwQueueStatus = pJobStatus->dwQueueStatus;
|
|
m_dwAvailableOperations = pJobStatus->dwAvailableJobOperations;
|
|
m_ExtendedStatusCode = FAX_JOB_EXTENDED_STATUS_ENUM(pJobStatus->dwExtendedStatus);
|
|
|
|
m_dtScheduleTime = pJobStatus->tmScheduleTime;
|
|
m_dtTransmissionEnd = pJobStatus->tmTransmissionEndTime;
|
|
m_dtTransmissionStart = pJobStatus->tmTransmissionStartTime;
|
|
|
|
m_bstrTSID = pJobStatus->lpctstrTsid;
|
|
m_bstrCSID = pJobStatus->lpctstrCsid;
|
|
m_bstrExtendedStatus = pJobStatus->lpctstrExtendedStatus;
|
|
m_bstrRoutingInfo = pJobStatus->lpctstrRoutingInfo;
|
|
m_bstrCallerId = pJobStatus->lpctstrCallerID;
|
|
m_dwValidityMask = pJobStatus->dwValidityMask;
|
|
if ( ((pJobStatus->lpctstrTsid) && !m_bstrTSID) ||
|
|
((pJobStatus->lpctstrCsid) && !m_bstrCSID) ||
|
|
((pJobStatus->lpctstrRoutingInfo) && !m_bstrRoutingInfo) ||
|
|
((pJobStatus->lpctstrExtendedStatus) && !m_bstrExtendedStatus) ||
|
|
((pJobStatus->lpctstrCallerID) && !m_bstrCallerId) )
|
|
{
|
|
//
|
|
// Not enough memory to copy the TSID into CComBSTR
|
|
//
|
|
hr = E_OUTOFMEMORY;
|
|
AtlReportError(CLSID_FaxJobStatus, IDS_ERROR_OUTOFMEMORY, IID_IFaxJobStatus, hr);
|
|
CALL_FAIL(MEM_ERR, _T("CComBSTR::operator=()"), hr);
|
|
return hr;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
//
|
|
//======================= SUPPORT ERROR INFO ==================================
|
|
//
|
|
STDMETHODIMP
|
|
CFaxJobStatus::InterfaceSupportsErrorInfo(
|
|
REFIID riid
|
|
)
|
|
/*++
|
|
|
|
Routine name : CFaxJobStatus::InterfaceSupportsErrorInfo
|
|
|
|
Routine description:
|
|
|
|
ATL's implementation of Support Error Info.
|
|
|
|
Author:
|
|
|
|
Iv Garber (IvG), Jul, 2000
|
|
|
|
Arguments:
|
|
|
|
riid [in] - reference to the ifc to check.
|
|
|
|
Return Value:
|
|
|
|
Standard HRESULT code
|
|
|
|
--*/
|
|
{
|
|
static const IID* arr[] =
|
|
{
|
|
&IID_IFaxJobStatus
|
|
};
|
|
for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
|
|
{
|
|
if (InlineIsEqualGUID(*arr[i],riid))
|
|
return S_OK;
|
|
}
|
|
return S_FALSE;
|
|
}
|
|
|