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:
tapiCountry.c
Abstract:
Utility functions for working with TAPI
Environment:
Server
Revision History:
09/18/96 -davidx- Created it.
07/25/99 -v-sashab- Moved from fxsui
--*/
#include "faxsvc.h"
#include "tapiCountry.h"
//
// Global variables used for accessing TAPI services
//
LPLINECOUNTRYLIST g_pLineCountryList;
BOOL GetCountries( VOID )
/*++
Routine Description:
Return a list of countries from TAPI
Arguments:
NONE
Return Value:
TRUE if successful, FALSE if there is an error
NOTE:
We cache the result of lineGetCountry here since it's incredibly slow. This function must be invoked inside a critical section since it updates globally shared information.
--*/
{ #define INITIAL_SIZE_ALL_COUNTRY 22000
DEBUG_FUNCTION_NAME(TEXT("GetCountries")); DWORD cbNeeded; LONG status; INT repeatCnt = 0;
if (g_pLineCountryList == NULL) {
//
// Initial buffer size
//
cbNeeded = INITIAL_SIZE_ALL_COUNTRY;
while (TRUE) {
MemFree(g_pLineCountryList); g_pLineCountryList = NULL;
if (! (g_pLineCountryList = (LPLINECOUNTRYLIST)MemAlloc(cbNeeded))) { DebugPrintEx( DEBUG_ERR, TEXT("Memory allocation failed")); break; }
g_pLineCountryList->dwTotalSize = cbNeeded;
status = lineGetCountry(0, MAX_TAPI_API_VER, g_pLineCountryList);
if ((g_pLineCountryList->dwNeededSize > g_pLineCountryList->dwTotalSize) && (status == NO_ERROR || status == LINEERR_STRUCTURETOOSMALL || status == LINEERR_NOMEM) && (repeatCnt++ == 0)) { cbNeeded = g_pLineCountryList->dwNeededSize + 1; DebugPrintEx( DEBUG_WRN, TEXT("LINECOUNTRYLIST size: %d"),cbNeeded); continue; }
if (status != NO_ERROR) {
DebugPrintEx( DEBUG_ERR, TEXT("lineGetCountry failed: %x"),status); MemFree(g_pLineCountryList); g_pLineCountryList = NULL;
} else DebugPrintEx(DEBUG_MSG,TEXT("Number of countries: %d"), g_pLineCountryList->dwNumCountries);
break; } }
return g_pLineCountryList != NULL; }
LPLINECOUNTRYLIST GetCountryList( ) { DEBUG_FUNCTION_NAME(TEXT("GetCountryList"));
return g_pLineCountryList; }
|