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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbserver.cpp

?? Windows多線程編碼隨書源碼
?? CPP
字號:
/*
 * DbServer.cpp
 *
 * Sample code for "Multithreading Applications in Win32"
 * This is from Chapter 16.
 *
 * DbServer is a process outside of the Internet
 * Information Server that processes requests from
 * Is2odbc in a fashion that will guarantee single-
 * threaded access to the JET engine.
 *
 * This process will be automatically started by
 * is2odbc.dll if it detects that DbServer.EXE
 * is not running.
 *
 * We cannot use MTVERIFY because this program does
 * not run under the desktop - it is loaded from a
 * service and so has a life of its own. Therefore
 * normal message boxes will not show up if something
 * fails.
 *
 * This server is intended to run forever because
 * we never get a shutdown message.  Note that this
 * process is VERY difficult to kill because the
 * user's desktop does not own this process.
 */

#include "stdafx.h"

//
// Include definition of Database Classes
//
#include "BookSet.h"

// Include the shared information between the Is2Odbc DLL and us
#include "..\Request.h"
#include "MtVerify.h"

CWinApp theApp;

//
// Setup a security descriptor that allows world access
//
SECURITY_DESCRIPTOR sd;
SECURITY_ATTRIBUTES sa;

void Log(char *msg)
{
	time_t ltime;
	time( &ltime );

	// Note that we keep appending to the end.
	// We keep opening and closing so that nothing
	// will be lost if the program crashes.
	FILE *fp = fopen("c:\\DbServer.log", "a");
	fprintf(fp, "DbServer: (%s) %s\n", ctime(&ltime), msg );
	fclose(fp);
}

//
// Define a main function to act as our server
//
int main()
{
	Log("Started");

    // Create a security descriptor that allows anyone
    //  to get at the event.  Otherwise the DLL and DbServer
	//  will get "access denied" trying to share data.
    if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))
	{
		Log("InitializeSecurityDescriptor failed");
		return EXIT_FAILURE;
	}

    // Add a NULL disc. ACL to the security descriptor.
    //
    if (!SetSecurityDescriptorDacl(&sd, TRUE, (PACL) NULL, FALSE))
	{
		Log("SetSecurityDescriptorDacl failed");
		return EXIT_FAILURE;
	}

    sa.nLength = sizeof(sa);
    sa.lpSecurityDescriptor = &sd;
    sa.bInheritHandle = FALSE;

	// If you are trying to debug DbServer.exe with IIS
	// running as a foreground process, this DebugBreak()
	// will let you get to the debugger.
	//DebugBreak();

	//
	// Open the DB Records that will be used
	///
	CAwBooksSet bookSet;

	// We do not really need to open the recordset here,
	// but it allows us to trap fatal open errors.
	try {
		if (!bookSet.Open())
		{
			Log("Failed to open book recordset");
			return EXIT_FAILURE;
		}
	}
	catch (CDBException* e)
	{
		char buf[256];
		e->GetErrorMessage(buf, 256);
		Log(buf);
		e->Delete();
		return EXIT_FAILURE;
	}

	Log("Initialized");

	// After being launched by the DLL, we need to set an event
	// to indicate that we are running. That event should have
	// been created by the DLL. If the event cannot be found,
	// loop and keep trying to open it.
	HANDLE hEvent;
	for (;;)
	{
		hEvent = ::OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_SERVER_RUNNING);
		if (hEvent)
			break;
		DWORD dwErr = ::GetLastError();
		if ( dwErr != ERROR_FILE_NOT_FOUND)
		{
			char buf[256];
			wsprintf(buf, "Received fatal error %d", dwErr);
			Log(buf);
			return EXIT_FAILURE;
		}
		// Put in a delay so this doesn't because a
		// tight loop and a CPU hog.
		Sleep(500);
	}
	::SetEvent(hEvent);

	Log("Finished handshake with DLL - Server ready");

	//
	// Create events for signalling the Is2Odbc DLL
	// 
	HANDLE hStartEvent = NULL;
	HANDLE hDoneEvent =  NULL;

	MTVERIFY( hStartEvent = ::CreateEvent(&sa, TRUE, FALSE, EVENT_START_PROCESSING));
	MTVERIFY( hDoneEvent =  ::CreateEvent(&sa, TRUE, FALSE, EVENT_DONE_PROCESSING));
	if (!hStartEvent || !hDoneEvent)
	{
		Log("Could not create events!");
		return -1;
	}

	//
	// Handle all incoming requests
	//
	DWORD dwResult;
	do
	{
		//
		// Wait until the IS2ODBC DLL tells us to start processing
		//
		dwResult = ::WaitForSingleObject(hStartEvent, INFINITE);
		if (dwResult == WAIT_OBJECT_0)
		{	// Got a request from the Is2Odbc DLL
			::ResetEvent(hStartEvent);

			// Get a pointer to the DB Request
			HANDLE hFileMapping = NULL;
			DbRequest* pDbRequest = NULL;

			MTVERIFY( hFileMapping = ::OpenFileMapping(
				FILE_MAP_ALL_ACCESS, FALSE, FILE_DB_REQUEST));

			MTVERIFY( pDbRequest = (DbRequest*) MapViewOfFile(hFileMapping,
				FILE_MAP_ALL_ACCESS, 0, 0, 0));

			//
			// Use exception handling to make sure DB request is handled correctly
			TRY
			{
				// Filter, parameterize and sort the section recordset
				bookSet.m_strFilter = pDbRequest->sqlFilter;
				bookSet.m_strSort = pDbRequest->sqlSort;

				BOOL bResult = FALSE;
				if (bookSet.IsOpen())
					bResult = bookSet.Requery();
				else
					bResult = bookSet.Open();
				if (bResult)
				{	// Add all the results to the request's result field
					char *pszOut = pDbRequest->sqlResult;
					while (!bookSet.IsEOF())
					{
						sprintf(pszOut, "(%s) %s, by %s<p>", bookSet.m_Category, bookSet.m_Title, bookSet.m_Author);
						pszOut += strlen(pszOut);
						bookSet.MoveNext();
					}	// end while
					bookSet.Close();
				}	// end if
			}	// end try
			CATCH(CDBException, e)
			{
				char buf[256];
				e->GetErrorMessage(buf, 256);
				sprintf(pDbRequest->sqlResult, "%s<p>", buf);
				bookSet.Close();
				e->Delete();
			}	// end catch
			END_CATCH

			// Signal Caller that request is done.
			SetEvent(hDoneEvent);

			// Close request data structure
			UnmapViewOfFile(pDbRequest);
			CloseHandle(hFileMapping);

		}	// end if

		//  only stay in loop if things are working correctly
	} while (dwResult == WAIT_OBJECT_0); 

	::CloseHandle(hEvent);
	::CloseHandle(hStartEvent);
	::CloseHandle(hDoneEvent);

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区免费视频| 777亚洲妇女| 欧美日韩久久不卡| 久久久久久久久久久久久女国产乱| 国产精品久久毛片a| 日本午夜一区二区| 一本高清dvd不卡在线观看| 久久综合九色综合欧美98| 亚洲综合区在线| 成人精品视频一区二区三区| 在线成人av网站| 亚洲人成影院在线观看| 国产大片一区二区| 日韩一区二区三区免费看| 亚洲精品国产第一综合99久久| 国产一区二区视频在线播放| 欧美日韩国产高清一区| 亚洲精品欧美专区| 成人综合婷婷国产精品久久免费| 欧美大尺度电影在线| 天天综合色天天综合| 在线免费不卡视频| 中文字幕一区二| 国产成人av一区二区三区在线观看| 日韩一区二区三区电影| 亚洲国产美女搞黄色| 在线视频亚洲一区| 亚洲色图视频网站| 91在线小视频| 成人免费一区二区三区视频 | 国产精品久久久久久久第一福利 | 国产日韩精品一区二区三区| 日韩有码一区二区三区| 欧美亚洲日本国产| 亚洲一区二区美女| 欧美影视一区在线| 一级日本不卡的影视| 在线免费一区三区| 亚瑟在线精品视频| 欧美日韩小视频| 日韩激情av在线| 日韩一区二区视频在线观看| 美国av一区二区| 欧美成人aa大片| 国产一区二区电影| 国产人妖乱国产精品人妖| 成熟亚洲日本毛茸茸凸凹| 中文在线一区二区| 91久久精品一区二区三区| 亚洲综合区在线| 欧美午夜精品一区二区三区| 亚洲成人av在线电影| 日韩美女视频在线| 国产成人精品影视| 亚洲视频在线一区观看| 欧美综合亚洲图片综合区| 日韩国产一二三区| 久久精品一区四区| 91精彩视频在线| 夜夜爽夜夜爽精品视频| 欧美一区二区精品| 国产一区二区免费视频| 日韩美女视频一区二区 | 国产精品一区久久久久| 中文字幕一区二区三区四区不卡| 欧美日韩一区二区不卡| 黄页视频在线91| 最新国产の精品合集bt伙计| 91精品国产91综合久久蜜臀| 国产麻豆91精品| 亚洲综合成人在线| 精品国产精品一区二区夜夜嗨| 成人a区在线观看| 视频一区视频二区中文| 欧美极品少妇xxxxⅹ高跟鞋| 欧洲国内综合视频| 国产·精品毛片| 天使萌一区二区三区免费观看| 欧美国产综合一区二区| 欧美日韩一区二区三区在线看 | 国产一区日韩二区欧美三区| 亚洲天堂a在线| 欧美成人a视频| 欧美调教femdomvk| 成人免费观看视频| 美日韩一级片在线观看| 一区二区在线观看不卡| 国产婷婷色一区二区三区在线| 欧美日韩视频第一区| 国产91精品在线观看| 日韩经典一区二区| 亚洲综合色成人| 国产三级一区二区三区| 日韩视频一区二区三区在线播放 | 日韩欧美中文字幕公布| 91精彩视频在线观看| 成人激情午夜影院| 久久精品国产一区二区三区免费看 | 国产一区激情在线| 日韩综合一区二区| 亚洲黄一区二区三区| 国产精品天美传媒沈樵| 欧美mv和日韩mv国产网站| 欧美日韩视频在线一区二区 | av一区二区不卡| 国产精品亚洲成人| 久久不见久久见免费视频1| 天天综合天天做天天综合| 亚洲在线中文字幕| 亚洲精品国久久99热| 国产精品久久国产精麻豆99网站| 久久色中文字幕| 日韩欧美亚洲国产另类| 欧美一区二区三区电影| 欧美人与禽zozo性伦| 欧美精品丝袜久久久中文字幕| 欧美私模裸体表演在线观看| 色哟哟精品一区| 99精品视频一区二区三区| 国产成人自拍网| 国产成人亚洲综合a∨婷婷| 国产经典欧美精品| 成人永久aaa| 99久久综合国产精品| 99re66热这里只有精品3直播| 色综合久久久久久久| 在线视频国内一区二区| 欧美在线观看视频一区二区三区| 色诱视频网站一区| 欧美三级乱人伦电影| 欧美精品高清视频| 精品日韩一区二区| 国产色产综合色产在线视频| 国产欧美日韩亚州综合| 亚洲日本电影在线| 亚洲高清视频在线| 日韩精品电影在线观看| 韩国成人精品a∨在线观看| 成人免费毛片嘿嘿连载视频| 色综合色综合色综合色综合色综合 | 成人a免费在线看| 色综合久久99| 91精品婷婷国产综合久久竹菊| 日韩精品一区二区三区swag| 久久老女人爱爱| 亚洲手机成人高清视频| 日韩精品一级中文字幕精品视频免费观看 | 欧美高清hd18日本| 久久久精品国产99久久精品芒果| 中文字幕精品一区| 亚洲成人午夜影院| 国产白丝网站精品污在线入口| 一本色道久久加勒比精品 | 国产欧美一区二区三区网站 | 国产精品自拍一区| 91在线免费播放| 在线综合视频播放| 中文字幕欧美三区| 亚洲一区二区三区爽爽爽爽爽| 久久精品国产一区二区三| 99久久99久久精品免费看蜜桃| 欧美日韩国产123区| 久久天堂av综合合色蜜桃网| 一区二区三区日韩精品视频| 国产自产2019最新不卡| 一本大道综合伊人精品热热 | 一本久久a久久精品亚洲| 91麻豆精品久久久久蜜臀| 国产精品成人一区二区三区夜夜夜| 亚洲6080在线| 91视频在线观看免费| 精品国产亚洲一区二区三区在线观看| 最近日韩中文字幕| 国内不卡的二区三区中文字幕 | 91在线观看成人| 日韩亚洲电影在线| 一区二区三区精品视频在线| 国产乱码精品一区二区三区忘忧草 | 国产一区二区三区免费看| 欧美视频完全免费看| 中文字幕一区av| 国产69精品久久777的优势| 欧美xxxx在线观看| 日韩专区中文字幕一区二区| 91黄色免费网站| 中文字幕一区在线观看视频| 国产激情精品久久久第一区二区| 在线综合+亚洲+欧美中文字幕| 亚洲激情在线激情| 色综合夜色一区| 中文字幕日韩一区| 成人午夜激情影院| 久久久91精品国产一区二区精品| 久久99精品网久久| 日韩欧美第一区| 天天影视色香欲综合网老头| 欧美亚州韩日在线看免费版国语版| 亚洲人成影院在线观看| av电影天堂一区二区在线观看| 国产免费观看久久|