亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? faxapi.cpp

?? fax engine 傳真引擎 relay fax 的開(kāi)源項(xiàng)目 商業(yè)軟件使用 高質(zhì)量 高可靠
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*****************************************************************************
* RelayFax Open Source Project
* Copyright 1996-2004 Alt-N Technologies, Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the RelayFax Open 
* Source License.  A copy of this license is available in file LICENSE 
* in the top-level directory of the distribution.
*
* RelayFax is a registered trademark of Alt-N Technologies, Ltd.
*
* Individual files and/or contributed packages may be copyright by
* other parties and subject to additional restrictions.
*****************************************************************************/

#include "stdafx.h"
#include "FaxAPI.h"

#include "ModemDetect.h"
#include "ClassOne.h"
#include "ClassOnePointZero.h"
#include "ClassTwo.h"
#include "ClassTwoPointZero.h"
#include "ClassTwoPointOne.h"

HINSTANCE g_Instance = NULL;

//////////////////////////////////////////////////////////////////////
// TiffWarningHandler
//////////////////////////////////////////////////////////////////////
static void TiffWarningHandler(const char* module, const char* fmt, va_list ap)
{
#ifdef DEBUG
	char buf[256] = {0};
	_vsnprintf( buf, sizeof(buf) - 1, fmt, ap);
	OutputDebugString( "Warning: " );
	OutputDebugString( buf );
	OutputDebugString( "\n" );
#endif
}

//////////////////////////////////////////////////////////////////////
// TiffErrorHandler
//////////////////////////////////////////////////////////////////////
static void TiffErrorHandler(const char* module, const char* fmt, va_list ap)
{
#ifdef DEBUG
	char buf[256] = {0};
	_vsnprintf( buf, sizeof(buf) - 1, fmt, ap);
	OutputDebugString( "Error: " );
	OutputDebugString( buf );
	OutputDebugString( "\n" );
#endif
}

//////////////////////////////////////////////////////////////////////
// DllMain
//////////////////////////////////////////////////////////////////////
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  dwReason, 
                       LPVOID lpReserved
					 )
{

	switch (dwReason)
	{
		case DLL_PROCESS_ATTACH:
			g_Instance = (HINSTANCE)hModule;
			CHiddenWindow::RegisterWindowClass( g_Instance );

			// set tiff error handlers
			TIFFSetErrorHandler( TiffErrorHandler );
			TIFFSetWarningHandler( TiffWarningHandler );

			break;

		case DLL_PROCESS_DETACH:
			CHiddenWindow::UnRegisterWindowClass();
			break;
	}

    return TRUE;
}


//////////////////////////////////////////////////////////////////////
// FaxApiGetModem - internal function
//////////////////////////////////////////////////////////////////////
CModem* FaxApiGetModem( FaxApiModem pModem )
{
	// check the obvious
	if( pModem == NULL )
		return NULL;

	// and the not so obvious
	if( IsBadWritePtr( pModem, sizeof(CModem) ) )
	{
		return NULL;
	}

	// cast it
	return (CModem*) pModem;
}


//////////////////////////////////////////////////////////////////////
// FaxApiCreateModem
//////////////////////////////////////////////////////////////////////
FaxApiModem FAXAPI_CALL FaxApiCreateModem( int nClass )
{
	FaxApiModem pModem = NULL;
	CModem* pMdm;

	switch( nClass )
	{
	case FAXAPI_DETECT:
		pMdm = new CModemDetect;
		break;

	case FAXAPI_CLASS_1:
		pMdm = new CClassOne;
		break;

	case FAXAPI_CLASS_1_0:
		pMdm = new CClassOnePointZero;
		break;

	case FAXAPI_CLASS_2:
		pMdm = new CClassTwo;
		break;

	case FAXAPI_CLASS_2_0:
		pMdm = new CClassTwoPointZero;
		break;

	case FAXAPI_CLASS_2_1:
		pMdm = new CClassTwoPointOne;
		break;

	default:
		pMdm = NULL;
		break;
	}

	if( pMdm )
	{
		pModem = pMdm;
	}

	return pModem;
}



//////////////////////////////////////////////////////////////////////
// FaxApiDeleteMessage
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiDeleteMessage( MSG* pMsg )
{
	// todo: check pMsg->cbm_cbSize

	if( pMsg == NULL )
	{
		return FAXAPI_ERROR_BAD_MSG;
	}

	if( pMsg->lParam == NULL )
	{
		return FAXAPI_ERROR_BAD_MSG;
	}

	switch( pMsg->lParam )
	{
	case FAXAPI_EVENT_DETECT_FINISHED:
		{
			FaxApiModemDetectMsg* pMMsg = (FaxApiModemDetectMsg*)pMsg->wParam;

			if( IsBadWritePtr( pMMsg, sizeof(FaxApiModemDetectMsg) ) )
			{
				return FAXAPI_ERROR_BAD_MSG;
			}
			
			delete pMMsg;
		}
		break;

	default:
		{
			FaxApiModemMsg* pMMsg = (FaxApiModemMsg*)pMsg->wParam;
			
			if( IsBadWritePtr( pMMsg, sizeof(FaxApiModemMsg) ) )
			{
				return FAXAPI_ERROR_BAD_MSG;
			}
			
			delete pMMsg;
		}
	}

	return FAXAPI_SUCCESS;
}


//////////////////////////////////////////////////////////////////////
// FaxApiSetCommParam
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetCommParam( FaxApiModem pModem, DWORD BaudRate, BYTE ByteSize, BYTE Parity, BYTE StopBits )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetCommParam( BaudRate, ByteSize, Parity, StopBits );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetFlowControl
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetFlowControl( FaxApiModem pModem, bool bDSRFlowControl, bool bCTSFlowControl, bool bSoftFlowControl )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetFlowControl( bDSRFlowControl, bCTSFlowControl, bSoftFlowControl );

	return FAXAPI_SUCCESS;
}


//////////////////////////////////////////////////////////////////////
// FaxApiSetPort
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetPort( FaxApiModem pModem, char* szPort )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetPort( szPort );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetSpkrParams
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetSpkrParams( FaxApiModem pModem, int nSpkrVol, int nSpkrMode )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetSpkrParams( nSpkrVol, nSpkrMode );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetDistinctiveRing
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetDistinctiveRing( FaxApiModem pModem, LPCSTR szRingCodes )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetDistinctiveRing( szRingCodes );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetInitString
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetInitString( FaxApiModem pModem, LPCSTR szString )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetInitString( szString );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetSendEncoding
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetSendEncoding( FaxApiModem pModem, int nEncoding )
{
	CModem* pMdm = FaxApiGetModem( pModem );

	if( pMdm == NULL )
	{
		return FAXAPI_ERROR_BAD_MODEM;
	}

	if( pMdm->ThreadStarted() )
	{
		// can't change the port once the thread is started.
		return FAXAPI_ERROR_THREAD_STARTED;
	}

	pMdm->SetSendEncoding( nEncoding );

	return FAXAPI_SUCCESS;
}

//////////////////////////////////////////////////////////////////////
// FaxApiSetSendECM
//////////////////////////////////////////////////////////////////////
int FAXAPI_CALL FaxApiSetSendECM( FaxApiModem pModem, bool bECMSupported )

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆国产精品视频| 精品欧美久久久| 91最新地址在线播放| 国产91丝袜在线18| 国产v日产∨综合v精品视频| 国产成人aaa| 成人黄色片在线观看| 成人午夜精品在线| aaa亚洲精品| 成人黄色小视频在线观看| 成人99免费视频| 色婷婷综合久久久久中文 | 另类中文字幕网| 麻豆成人免费电影| 国产一区二区三区四区在线观看| 韩国欧美国产一区| 懂色av噜噜一区二区三区av| 成人免费观看av| 一本色道久久综合狠狠躁的推荐 | 日韩一区二区在线观看视频播放| 日韩免费看网站| 久久精品一区二区三区不卡牛牛| 国产欧美日韩在线视频| 亚洲欧洲美洲综合色网| 亚洲精品成人在线| 日韩在线一二三区| 国产米奇在线777精品观看| 成人精品视频网站| 欧美三级韩国三级日本一级| 日韩午夜激情视频| 国产精品无人区| 夜色激情一区二区| 经典三级一区二区| a在线欧美一区| 欧美高清dvd| 国产网站一区二区三区| 亚洲精品欧美激情| 蜜桃视频在线观看一区| 国v精品久久久网| 欧美自拍丝袜亚洲| 婷婷开心久久网| 捆绑变态av一区二区三区| 国产91综合网| 在线成人免费视频| 欧美国产日韩a欧美在线观看| 亚洲综合成人在线| 国产最新精品精品你懂的| 色呦呦国产精品| 精品久久一区二区| 一区二区在线免费| 久草中文综合在线| 91福利在线免费观看| xnxx国产精品| 亚洲国产aⅴ天堂久久| 国产一区二区三区久久久| 91国偷自产一区二区三区观看| 日韩精品一区二区三区在线| 亚洲欧美区自拍先锋| 精久久久久久久久久久| 欧美日精品一区视频| 国产精品毛片高清在线完整版 | 成人v精品蜜桃久久一区| 欧美久久久影院| 最新不卡av在线| 国产真实乱偷精品视频免| 欧美性xxxxx极品少妇| 欧美国产欧美综合| 日本在线不卡一区| 在线国产亚洲欧美| 国产精品―色哟哟| 国模少妇一区二区三区| 欧美日韩国产片| 亚洲欧美日韩精品久久久久| 国产精品资源在线观看| 欧美一区二区三区在线电影| 亚洲精品乱码久久久久久| 成人黄色国产精品网站大全在线免费观看 | 国产一区二区三区免费在线观看| 在线视频欧美精品| 国产精品国产三级国产普通话三级 | 中文字幕一区二区三| 国产在线视频一区二区| 欧美一区二区三区影视| 亚洲午夜免费视频| 91同城在线观看| 中文幕一区二区三区久久蜜桃| 久久精品国产一区二区三| 欧美日韩精品一区二区三区 | 免费日本视频一区| 色女孩综合影院| 亚洲欧美偷拍三级| 99久久精品免费精品国产| 欧美激情一区二区在线| 国产成人一区在线| 久久精品视频网| 国产成人在线观看免费网站| 久久久精品tv| 国产一区二区久久| 久久人人97超碰com| 精品亚洲国产成人av制服丝袜| 欧美一区二区三区播放老司机| 日韩国产成人精品| 91精品国产入口| 日本人妖一区二区| 日韩欧美一卡二卡| 经典三级一区二区| www久久精品| 国产成人综合在线| 欧美高清在线精品一区| 成+人+亚洲+综合天堂| 中文字幕在线观看不卡视频| 99国产精品国产精品久久| 日韩理论电影院| 91片黄在线观看| 亚洲香肠在线观看| 69堂国产成人免费视频| 久久国产精品99久久久久久老狼| 精品美女一区二区三区| 国产高清不卡二三区| 国产精品亲子伦对白| 色综合久久天天| 亚洲福利视频三区| 欧美电视剧在线看免费| 国产成人在线影院| 国产精品久久三| 欧美性一区二区| 精品视频免费在线| 七七婷婷婷婷精品国产| 久久综合给合久久狠狠狠97色69| 国产999精品久久| 亚洲蜜臀av乱码久久精品蜜桃| 欧美性生活久久| 另类人妖一区二区av| 国产精品视频一二三区| 91官网在线观看| 久久国产麻豆精品| 国产精品久久久久久久久快鸭| 在线精品视频免费播放| 美女一区二区久久| 国产精品国产三级国产专播品爱网| 欧美中文字幕不卡| 韩国成人福利片在线播放| 国产精品久久久久7777按摩| 欧美日韩综合在线| 国产精品99久久久久久有的能看| 亚洲女人的天堂| 日韩精品自拍偷拍| 91亚洲精品一区二区乱码| 免费在线看一区| 中文字幕一区二区三区在线不卡 | 国产午夜亚洲精品不卡| 日本福利一区二区| 国产一区二区导航在线播放| 亚洲精品国产品国语在线app| 日韩精品一区二区三区四区| 白白色亚洲国产精品| 青青草国产成人99久久| 国产精品嫩草影院com| 91精品国产综合久久国产大片| 成人黄色免费短视频| 免费高清在线一区| 一区二区三区四区国产精品| 2017欧美狠狠色| 欧美精品一二三四| zzijzzij亚洲日本少妇熟睡| 久久国产乱子精品免费女| 一区二区三区四区av| 久久99久久精品| 亚洲激情男女视频| 国产色婷婷亚洲99精品小说| 这里只有精品免费| 欧美在线观看禁18| 成人av网站免费| 韩国一区二区三区| 日韩精品免费视频人成| 亚洲精品欧美激情| 欧美国产日韩a欧美在线观看| 欧美一区二区日韩| 欧美三级中文字| 99精品在线观看视频| 成人自拍视频在线| 韩国成人福利片在线播放| 日韩成人免费电影| 亚洲一二三区不卡| 亚洲免费在线观看视频| 国产精品你懂的在线欣赏| 久久久精品国产免大香伊| 日韩精品最新网址| 日韩区在线观看| 欧美一区二区视频免费观看| 欧美日韩一区在线| 欧美在线一区二区| 日本高清不卡一区| 91国产免费观看| 欧美综合视频在线观看| 色综合久久九月婷婷色综合| 91在线观看高清| 91亚洲精品久久久蜜桃网站| 北岛玲一区二区三区四区| 成人免费看的视频|