mirror of https://github.com/tongzx/nt5src
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.
154 lines
6.2 KiB
154 lines
6.2 KiB
//+----------------------------------------------------------------------------
|
|
//
|
|
// File: phbk.h
|
|
//
|
|
// Module: CMPBK32.DLL
|
|
//
|
|
// Synopsis: Definitions for the CPhoneBook class
|
|
//
|
|
// Copyright (c) 1998 Microsoft Corporation
|
|
//
|
|
// Author: quintinb created header 08/17/99
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
#ifndef _PHBK
|
|
#define _PHBK
|
|
|
|
#define DllExportH extern "C" HRESULT WINAPI __stdcall
|
|
|
|
|
|
//#define DllExport extern "C" __stdcall __declspec(dllexport)
|
|
//#define DllExport extern "C" __declspec(dllexport)
|
|
|
|
#define cbAreaCode 11 // maximum number of characters in an area code, not including \0
|
|
#define cbCity 31 // maximum number of chars in city name, not including \0
|
|
#define cbAccessNumber 41 // maximum number of chars in phone number, not including \0
|
|
#define cbStateName 31 // maximum number of chars in state name, not including \0
|
|
#define cbBaudRate 6 // maximum number of chars in a baud rate, not including \0
|
|
#define cbDataCenter (MAX_PATH+1) // max length of data center string
|
|
|
|
// Our initial allocation of memory when loading the phone book
|
|
|
|
#define PHONE_ENTRY_ALLOC_SIZE 500
|
|
|
|
#define NO_AREA_CODE (-1)
|
|
|
|
#define TEMP_BUFFER_LENGTH 1024
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwIndex; // index number
|
|
BYTE bFlipFactor; // for auto-pick
|
|
DWORD fType; // phone number type
|
|
WORD wStateID; // state ID
|
|
DWORD dwCountryID; // TAPI country ID
|
|
DWORD dwAreaCode; // area code or NO_AREA_CODE if none
|
|
DWORD dwConnectSpeedMin; // minimum baud rate
|
|
DWORD dwConnectSpeedMax; // maximum baud rate
|
|
char szCity[cbCity + sizeof('\0')]; // city name
|
|
char szAccessNumber[cbAccessNumber + sizeof('\0')]; // access number
|
|
char szDataCenter[cbDataCenter + sizeof('\0')]; // data center access string
|
|
char szAreaCode[cbAreaCode + sizeof('\0')]; //Keep the actual area code string around.
|
|
} ACCESSENTRY, *PACCESSENTRY; // ae
|
|
|
|
typedef struct {
|
|
DWORD dwCountryID; // country ID that this state occurred in
|
|
LONG_PTR iFirst; // index of first access entry for this state
|
|
char szStateName[cbStateName + sizeof('\0')]; // state name
|
|
} STATE, *PSTATE;
|
|
|
|
typedef struct tagIDLOOKUPELEMENT {
|
|
DWORD dwID;
|
|
LPLINECOUNTRYENTRY pLCE;
|
|
LONG_PTR iFirstAE;
|
|
} IDLOOKUPELEMENT, *PIDLOOKUPELEMENT;
|
|
|
|
typedef struct tagCNTRYNAMELOOKUPELEMENT {
|
|
LPSTR psCountryName;
|
|
DWORD dwNameSize;
|
|
LPLINECOUNTRYENTRY pLCE;
|
|
} CNTRYNAMELOOKUPELEMENT, *PCNTRYNAMELOOKUPELEMENT;
|
|
|
|
typedef struct tagCNTRYNAMELOOKUPELEMENTW {
|
|
LPWSTR psCountryName;
|
|
DWORD dwNameSize;
|
|
LPLINECOUNTRYENTRY pLCE;
|
|
} CNTRYNAMELOOKUPELEMENTW, *PCNTRYNAMELOOKUPELEMENTW;
|
|
|
|
typedef struct tagIDXLOOKUPELEMENT {
|
|
DWORD dwIndex;
|
|
LONG_PTR iAE;
|
|
} IDXLOOKUPELEMENT,*PIDXLOOKUPELEMENT;
|
|
|
|
typedef void (WINAPI *CB_PHONEBOOK)(unsigned int, DWORD_PTR);
|
|
|
|
//
|
|
// CPhoneBook
|
|
//
|
|
|
|
class CPhoneBook
|
|
{
|
|
|
|
public:
|
|
|
|
CPhoneBook();
|
|
~CPhoneBook();
|
|
|
|
HRESULT Init(LPCSTR pszISPCode);
|
|
HRESULT Merge(LPCSTR pszChangeFilename);
|
|
HRESULT GetCanonical(PACCESSENTRY pAE, char *psOut);
|
|
HRESULT GetNonCanonical(PACCESSENTRY pAE, char *psOut);
|
|
HRESULT GetCanonical(DWORD dwIdx, char *psOut) { return (GetCanonical(&m_rgPhoneBookEntry[dwIdx],psOut)); };
|
|
HRESULT GetNonCanonical(DWORD dwIdx, char *psOut) { return (GetNonCanonical(&m_rgPhoneBookEntry[dwIdx],psOut)); };
|
|
void EnumCountries(DWORD dwMask, DWORD fType, CB_PHONEBOOK pfnCountry, DWORD_PTR dwParam);
|
|
void EnumCountries(PPBFS pFilter, CB_PHONEBOOK pfnCountry, DWORD_PTR dwParam);
|
|
void EnumRegions(DWORD dwCountryID, DWORD dwMask, DWORD fType, CB_PHONEBOOK pfnCountry, DWORD_PTR dwParam);
|
|
void EnumRegions(DWORD dwCountryID, PPBFS pFilter, CB_PHONEBOOK pfnCountry, DWORD_PTR dwParam);
|
|
void EnumNumbersByCountry(DWORD dwCountryId, DWORD dwMask, DWORD fType, CB_PHONEBOOK pfnNumber, DWORD_PTR dwParam);
|
|
void EnumNumbersByCountry(DWORD dwCountryId, PPBFS pFilter, CB_PHONEBOOK pfnNumber, DWORD_PTR dwParam);
|
|
void EnumNumbersByRegion(unsigned int nRegion, DWORD dwCountryId, DWORD dwMask, DWORD fType, CB_PHONEBOOK pfnNumber, DWORD_PTR dwParam);
|
|
void EnumNumbersByRegion(unsigned int nRegion, DWORD dwCountryId, PPBFS pFilter, CB_PHONEBOOK pfnNumber, DWORD_PTR dwParam);
|
|
BOOL FHasPhoneType(PPBFS pFilter);
|
|
BOOL FHasPhoneNumbers(DWORD dwCountryID, DWORD dwMask, DWORD fType);
|
|
BOOL FHasPhoneNumbers(DWORD dwCountryID, PPBFS pFilter);
|
|
LPCSTR GetCountryNameByIdx(DWORD dwIdx) { return (m_rgNameLookUp[dwIdx].psCountryName); };
|
|
LPCWSTR GetCountryNameByIdxW(DWORD dwIdx) { return (((CNTRYNAMELOOKUPELEMENTW *)(&m_rgNameLookUp[dwIdx]))->psCountryName); };
|
|
DWORD GetCountryIDByIdx(DWORD dwIdx) { return (m_rgNameLookUp[dwIdx].pLCE->dwCountryID); };
|
|
LPCTSTR GetRegionNameByIdx(DWORD dwIdx) { return (m_rgState[dwIdx].szStateName); };
|
|
LPCTSTR GetCityNameByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].szCity); };
|
|
LPCTSTR GetAreaCodeByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].szAreaCode); };
|
|
LPCTSTR GetAccessNumberByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].szAccessNumber); };
|
|
LPCTSTR GetDataCenterByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].szDataCenter); };
|
|
DWORD GetPhoneTypeByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].fType); };
|
|
DWORD GetMinBaudByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].dwConnectSpeedMin); };
|
|
DWORD GetMaxBaudByIdx(DWORD dwIdx) { return (m_rgPhoneBookEntry[dwIdx].dwConnectSpeedMax); };
|
|
|
|
private:
|
|
ACCESSENTRY *m_rgPhoneBookEntry;
|
|
DWORD m_cPhoneBookEntries;
|
|
LINECOUNTRYENTRY *m_rgLineCountryEntry;
|
|
LINECOUNTRYLIST *m_pLineCountryList;
|
|
IDLOOKUPELEMENT *m_rgIDLookUp;
|
|
CNTRYNAMELOOKUPELEMENT *m_rgNameLookUp;
|
|
PSTATE m_rgState;
|
|
DWORD m_cStates;
|
|
|
|
char m_szINFFile[MAX_PATH];
|
|
char m_szPhoneBook[MAX_PATH];
|
|
|
|
BOOL ReadPhoneBookDW(DWORD *pdw, CCSVFile *pcCSVFile);
|
|
BOOL ReadPhoneBookW(WORD *pw, CCSVFile *pcCSVFile);
|
|
BOOL ReadPhoneBookSZ(LPSTR psz, DWORD dwSize, CCSVFile *pcCSVFile);
|
|
BOOL ReadPhoneBookB(BYTE *pb, CCSVFile *pcCSVFile);
|
|
BOOL ReadPhoneBookNL(CCSVFile *pcCSVFile);
|
|
HRESULT ReadOneLine(PACCESSENTRY pAccessEntry, CCSVFile *pcCSVFile);
|
|
|
|
PACCESSENTRY IdxToPAE(LONG_PTR iIdx) { return ((iIdx==0)?NULL:(m_rgPhoneBookEntry+(iIdx-1))); };
|
|
LONG_PTR PAEToIdx(PACCESSENTRY pAE) { return ((pAE==NULL)?0:((pAE-m_rgPhoneBookEntry)+1)); };
|
|
|
|
};
|
|
|
|
extern HINSTANCE g_hInst; // instance for this DLL
|
|
|
|
#endif // _PHBK
|
|
|