windows-nt/Source/XPSP1/NT/printscan/fax/util/faxmodem.c
2020-09-26 16:20:57 +08:00

110 lines
2.1 KiB
C

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
faxmodem.c
Abstract:
This module contains code to read the adaptive
answer modem list from the faxsetup.inf file.
Author:
Wesley Witt (wesw) 22-Sep-1997
Revision History:
--*/
#include <windows.h>
#include <setupapi.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include "faxreg.h"
#include "faxutil.h"
LPVOID
InitializeAdaptiveAnswerList(
HINF hInf
)
{
BOOL CloseInfHandle = FALSE;
TCHAR Buffer[MAX_PATH];
DWORD ErrorLine;
INFCONTEXT InfLine;
DWORD ModemCount = 0;
LPTSTR ModemList = NULL;
LPTSTR p;
DWORD Size = 0;
if (hInf == NULL) {
ExpandEnvironmentStrings( TEXT("%windir%\\inf\\faxsetup.inf"), Buffer, sizeof(Buffer)/sizeof(TCHAR) );
hInf = SetupOpenInfFile( Buffer, NULL, INF_STYLE_WIN4, &ErrorLine );
if (hInf == INVALID_HANDLE_VALUE) {
goto exit;
}
CloseInfHandle = TRUE;
}
if (SetupFindFirstLine( hInf, ADAPTIVE_ANSWER_SECTION, NULL, &InfLine )) {
do {
if (SetupGetStringField( &InfLine, 1, Buffer, sizeof(Buffer)/sizeof(TCHAR), &ErrorLine )) {
Size += StringSize( Buffer );
ModemCount += 1;
}
} while(SetupFindNextLine(&InfLine,&InfLine));
}
ModemList = MemAlloc( Size + 16 );
if (ModemList == NULL) {
goto exit;
}
p = ModemList;
if (SetupFindFirstLine( hInf, ADAPTIVE_ANSWER_SECTION, NULL, &InfLine )) {
do {
if (SetupGetStringField( &InfLine, 1, Buffer, sizeof(Buffer)/sizeof(TCHAR), &ErrorLine )) {
_tcscpy( p, Buffer );
p += (_tcslen( Buffer ) + 1);
}
} while(SetupFindNextLine(&InfLine,&InfLine));
}
exit:
if (CloseInfHandle) {
SetupCloseInfFile( hInf );
}
return ModemList;
}
BOOL
IsModemAdaptiveAnswer(
LPVOID ModemList,
LPCTSTR ModemId
)
{
LPCTSTR p = ModemList;
while (p && *p) {
if (_tcsicmp( p, ModemId ) == 0) {
return TRUE;
}
p += (_tcslen( p ) + 1);
}
return FALSE;
}