178 lines
4.8 KiB
C++
178 lines
4.8 KiB
C++
|
|
||
|
//#--------------------------------------------------------------
|
||
|
//
|
||
|
// File: support.cpp
|
||
|
//
|
||
|
// Synopsis: holds the member functions for the support
|
||
|
// class
|
||
|
//
|
||
|
// History: 5/8/97 MKarki Created
|
||
|
//
|
||
|
// Copyright (C) 1996-97 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
//----------------------------------------------------------------
|
||
|
#include "stdafx.h"
|
||
|
|
||
|
//++--------------------------------------------------------------
|
||
|
//
|
||
|
// Function: GetSupportInfo
|
||
|
//
|
||
|
// Synopsis: This is the public member function used to get the
|
||
|
// support numbers
|
||
|
//
|
||
|
// Returns: BOOL - success/failure
|
||
|
//
|
||
|
// Arguments: PCHAR - returns the number
|
||
|
//
|
||
|
// History: MKarki Created 5/8/97
|
||
|
//
|
||
|
//----------------------------------------------------------------
|
||
|
BOOL
|
||
|
CSupport :: GetSupportInfo
|
||
|
(
|
||
|
LPTSTR pszNumber,
|
||
|
DWORD dwCountryID
|
||
|
)
|
||
|
{
|
||
|
HINSTANCE hPHBKDll = NULL;
|
||
|
DWORD dwBufferSize = 0;
|
||
|
BOOL bRetVal = FALSE;
|
||
|
PFNGETSUPPORTNUMBERS pfnSupport = NULL;
|
||
|
HRESULT hr = ERROR_SUCCESS;
|
||
|
DWORD dwTotalNums = 0;
|
||
|
DWORD dwIndex = 0;
|
||
|
|
||
|
|
||
|
TraceMsg (TF_GENERAL, TEXT("Entering CSupport :: GetSupportInfo\r\n"));
|
||
|
|
||
|
if (NULL == pszNumber)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("NULL = pszNumber\r\n"));
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
if (NULL == m_pSupportNumList)
|
||
|
{
|
||
|
//
|
||
|
// being called the first time so load the info
|
||
|
//
|
||
|
hPHBKDll = LoadLibrary(PHBK_LIB);
|
||
|
if (NULL == hPHBKDll)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("Failed on LoadLibrary API call with error:%d\r\n"),
|
||
|
GetLastError () );
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
pfnSupport = (PFNGETSUPPORTNUMBERS)
|
||
|
GetProcAddress(hPHBKDll,PHBK_SUPPORTNUMAPI);
|
||
|
if (NULL == pfnSupport)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("Failed on GetProcAddress API call with error:%d\r\n"),
|
||
|
GetLastError () );
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// call the first time to get the size needed
|
||
|
//
|
||
|
hr = pfnSupport ((PSUPPORTNUM)NULL, (PDWORD)&dwBufferSize);
|
||
|
if (ERROR_SUCCESS != hr)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("Failed on GetSupportNumbers API call with error:%d\r\n"),
|
||
|
hr);
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// allocate the required memory
|
||
|
//
|
||
|
m_pSupportNumList = (PSUPPORTNUM) GlobalAlloc (
|
||
|
GPTR,
|
||
|
dwBufferSize
|
||
|
);
|
||
|
if (NULL == m_pSupportNumList)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("Failed on GlobalAlloc API call with error:%d\r\n"),
|
||
|
GetLastError ());
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// call second time for the info
|
||
|
//
|
||
|
hr = pfnSupport ((PSUPPORTNUM)m_pSupportNumList, (PDWORD)&dwBufferSize);
|
||
|
if (ERROR_SUCCESS != hr)
|
||
|
{
|
||
|
TraceMsg (TF_GENERAL, TEXT("Failed on GetSupportNumbers API call with error:%d\r\n"),
|
||
|
hr);
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// find out how many SUPPORTNUM structs we have in the
|
||
|
// array
|
||
|
m_dwTotalNums = dwBufferSize / sizeof (SUPPORTNUM);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// get the current country code
|
||
|
//
|
||
|
for (dwIndex = 0; dwIndex < m_dwTotalNums; dwIndex++)
|
||
|
{
|
||
|
//
|
||
|
// this struct says countrycode but is actually countryID
|
||
|
//
|
||
|
if (m_pSupportNumList[dwIndex].dwCountryCode == dwCountryID)
|
||
|
{
|
||
|
//
|
||
|
// found a support phone number
|
||
|
//
|
||
|
CopyMemory (
|
||
|
pszNumber,
|
||
|
m_pSupportNumList[dwIndex].szPhoneNumber,
|
||
|
sizeof (m_pSupportNumList[dwIndex].szPhoneNumber)
|
||
|
);
|
||
|
bRetVal = TRUE;
|
||
|
goto Cleanup;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Cleanup:
|
||
|
if (NULL != hPHBKDll)
|
||
|
FreeLibrary (hPHBKDll);
|
||
|
|
||
|
TraceMsg (TF_GENERAL, TEXT("returning from CSupport :: GetSupportInfo function\r\n"));
|
||
|
|
||
|
return (bRetVal);
|
||
|
|
||
|
} // end of CSupport :: GetSupportInfo function
|
||
|
|
||
|
//++--------------------------------------------------------------
|
||
|
//
|
||
|
// Function: ~CSupport
|
||
|
//
|
||
|
// Synopsis: This is the destructor of the CSupport class
|
||
|
//
|
||
|
//
|
||
|
// Arguments: VOID
|
||
|
//
|
||
|
// History: MKarki Created 5/8/97
|
||
|
//
|
||
|
//----------------------------------------------------------------
|
||
|
CSupport :: ~CSupport (
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
if (NULL != m_pSupportNumList)
|
||
|
GlobalFree (m_pSupportNumList);
|
||
|
|
||
|
} // end of ~CSupport function
|
||
|
|