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

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

?? dbserver.cpp

?? 《Win32多線程程序設計》配套代碼.集成了一般簡單的線程設計及優化的原理。
?? 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一区二区三区免费野_久草精品视频
免费看欧美女人艹b| 国产精品天干天干在观线| 一区二区三区中文在线观看| 成人va在线观看| 中文字幕亚洲一区二区av在线| 成人的网站免费观看| 亚洲美女屁股眼交3| 日本电影亚洲天堂一区| 亚洲一区二区三区四区五区黄| 91成人国产精品| 亚洲v日本v欧美v久久精品| 在线播放视频一区| 美女一区二区三区在线观看| 久久久夜色精品亚洲| a4yy欧美一区二区三区| 亚洲线精品一区二区三区八戒| 欧美精品一二三| 韩国成人精品a∨在线观看| 国产欧美日韩中文久久| 日本精品一区二区三区四区的功能| 亚洲综合在线第一页| 日韩欧美色综合网站| 成人午夜私人影院| 亚洲黄色在线视频| 日韩免费一区二区| 成人av在线播放网址| 亚洲成人中文在线| 国产欧美日韩在线看| 欧美日韩免费一区二区三区 | 精品在线亚洲视频| 欧美国产精品劲爆| 欧美卡1卡2卡| 国产成人综合在线| 亚洲国产精品人人做人人爽| 精品1区2区在线观看| 91在线观看污| 精品一区二区在线观看| 亚洲免费在线视频一区 二区| 日韩一级免费观看| 91视频国产观看| 国产一区二区三区久久悠悠色av| 亚洲精品老司机| 久久久久国色av免费看影院| 欧美色涩在线第一页| 成人激情综合网站| 久久国产精品露脸对白| 一区二区在线观看av| 国产日产欧美一区二区视频| 欧美日韩久久不卡| 92精品国产成人观看免费| 麻豆精品精品国产自在97香蕉| 亚洲精品视频观看| 国产人久久人人人人爽| 日韩欧美专区在线| 精品视频免费在线| 欧美大片免费久久精品三p | 色婷婷国产精品综合在线观看| 精品中文字幕一区二区| 亚洲1区2区3区4区| 亚洲毛片av在线| 国产精品久久久久久久久久免费看| 日韩免费电影网站| 欧美裸体一区二区三区| 日本精品裸体写真集在线观看 | 欧美视频在线播放| 91蝌蚪porny成人天涯| 成人天堂资源www在线| 国产一区二区看久久| 蜜臀av性久久久久av蜜臀妖精| 亚洲第一主播视频| 亚洲成人久久影院| 亚洲小说春色综合另类电影| 亚洲另类色综合网站| 亚洲少妇最新在线视频| 18成人在线观看| 国产精品国产三级国产有无不卡| 久久久久久久久99精品| 久久精品人人爽人人爽| 久久久久9999亚洲精品| 久久久噜噜噜久噜久久综合| 欧美成人aa大片| 亚洲精品在线免费观看视频| 久久夜色精品一区| 久久久精品黄色| 中文字幕第一区综合| 国产精品污污网站在线观看| 国产精品国产三级国产aⅴ原创 | 亚洲特黄一级片| 中文字幕一区二区三区在线播放| 国产精品精品国产色婷婷| 最新日韩在线视频| 一区二区三区中文字幕| 五月综合激情网| 美女视频黄频大全不卡视频在线播放| 日韩1区2区日韩1区2区| 精品一区二区影视| 成人激情黄色小说| 色呦呦网站一区| 91麻豆精品国产91久久久久久| 日韩欧美中文字幕公布| 久久蜜桃一区二区| 日韩理论电影院| 香蕉加勒比综合久久| 国产真实乱对白精彩久久| 成人va在线观看| 欧美三级日韩在线| 久久亚洲综合色一区二区三区 | 国产精品免费视频网站| 亚洲综合999| 精品一区二区免费| av中文字幕不卡| 欧美人与性动xxxx| 久久久亚洲高清| 亚洲欧美视频在线观看| 美女视频第一区二区三区免费观看网站| 国产在线一区观看| 欧美综合天天夜夜久久| 欧美不卡一区二区三区| 中文字幕亚洲一区二区va在线| 日日夜夜精品视频免费| 国产91在线观看丝袜| 欧美美女激情18p| 国产欧美精品一区二区色综合 | 国产福利一区二区三区视频在线| 色哟哟日韩精品| 精品国内二区三区| 一级特黄大欧美久久久| 韩国欧美国产1区| 在线观看免费一区| 国产欧美精品一区aⅴ影院| 亚洲国产精品久久久男人的天堂| 国产一区二区三区国产| 欧美日韩精品一区二区三区| 欧美国产日韩亚洲一区| 日本不卡一二三| 91原创在线视频| 久久久久久久综合日本| 亚洲成av人在线观看| 成人avav影音| 精品国产免费视频| 亚洲va欧美va国产va天堂影院| 高清在线不卡av| 日韩网站在线看片你懂的| 夜夜揉揉日日人人青青一国产精品| 国产高清成人在线| 日韩一级在线观看| 亚州成人在线电影| 91极品美女在线| 中文字幕在线观看一区| 国产精品资源在线| 精品嫩草影院久久| 视频在线观看91| 欧美日韩亚洲综合在线 | 欧美日韩亚洲不卡| 亚洲乱码国产乱码精品精小说| 国产精品一区二区三区四区 | 91精彩视频在线观看| 国产精品国产三级国产三级人妇| 国产成人8x视频一区二区| 精品欧美一区二区三区精品久久| 日韩成人一级片| 欧美一区二区三区四区久久 | 亚洲欧美韩国综合色| 成人av免费在线观看| 欧美韩日一区二区三区四区| 国产精品亚洲人在线观看| 久久只精品国产| 韩国视频一区二区| www激情久久| 国产在线精品一区二区三区不卡| 精品国产污网站| 久久99最新地址| 26uuu色噜噜精品一区二区| 狠狠色丁香九九婷婷综合五月| 久久青草欧美一区二区三区| 国产福利一区二区三区视频在线| 国产午夜精品一区二区三区视频| 国产麻豆91精品| 国产精品美女久久久久久久| av中文字幕一区| 亚洲一区二区免费视频| 在线电影欧美成精品| 日本欧美韩国一区三区| 精品国产乱码久久久久久图片| 国产一区视频导航| 日本一区二区动态图| 91一区二区在线| 亚洲成av人**亚洲成av**| 91精品国产一区二区三区蜜臀| 九一九一国产精品| 国产精品亲子伦对白| 91蝌蚪porny| 日韩影院免费视频| 久久综合av免费| 99精品视频一区| 五月天激情综合| 久久免费国产精品| 一本色道久久综合亚洲91| 视频在线观看一区| 国产精品污网站|