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

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

?? dbserver.cpp

?? vc 多線程程序設計, 很詳細,很全面.
?? 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一区二区三区免费野_久草精品视频
久久精品久久精品| 欧美影院午夜播放| 精品视频在线免费看| 久久一夜天堂av一区二区三区| 一区二区在线免费观看| 精品中文字幕一区二区小辣椒| 亚洲精品日韩综合观看成人91| 欧美激情艳妇裸体舞| 日韩成人伦理电影在线观看| 色乱码一区二区三区88| 国产农村妇女精品| 秋霞国产午夜精品免费视频| 欧美在线一二三| 国产精品剧情在线亚洲| 国产乱人伦精品一区二区在线观看 | 国产高清在线精品| 欧美男男青年gay1069videost| 国产精品美女久久久久av爽李琼| 久久国产尿小便嘘嘘尿| 欧美剧情片在线观看| 一区二区三区在线观看欧美| 成人爽a毛片一区二区免费| 精品福利在线导航| 日本va欧美va精品发布| 欧美日韩精品一区二区三区四区| 亚洲一区在线视频观看| 97aⅴ精品视频一二三区| 国产日本亚洲高清| 91麻豆福利精品推荐| 中文字幕国产一区| fc2成人免费人成在线观看播放| 国产日韩欧美一区二区三区综合| 久久精品999| 欧美大片国产精品| 久久成人免费网站| 精品国精品国产| 麻豆视频观看网址久久| 日韩欧美亚洲另类制服综合在线| 青青草国产精品97视觉盛宴| 日韩精品综合一本久道在线视频| 全国精品久久少妇| 久久综合久久99| 国产激情一区二区三区| 中文文精品字幕一区二区| 国产黄色精品网站| 亚洲婷婷国产精品电影人久久| 99精品一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 91福利在线看| 日韩av电影天堂| 亚洲精品在线三区| 成人一道本在线| 亚洲激情在线激情| 欧美久久久久中文字幕| 精品一区免费av| 国产精品网站一区| 一本色道久久综合亚洲精品按摩| 午夜精品影院在线观看| 日韩欧美一级精品久久| 国产激情偷乱视频一区二区三区| 亚洲欧美日韩电影| 3751色影院一区二区三区| 精品一区二区三区在线视频| 国产精品狼人久久影院观看方式| 91美女片黄在线| 久久精品国产免费看久久精品| 国产日韩v精品一区二区| 色哟哟一区二区| 卡一卡二国产精品| 18成人在线观看| 日韩一区二区免费视频| 成人黄页在线观看| 丝袜国产日韩另类美女| 国产欧美在线观看一区| 久久久久久一二三区| 91免费小视频| 狠狠色丁香久久婷婷综| 亚洲精品欧美综合四区| 久久综合九色综合97婷婷女人| aaa欧美大片| 久久精品噜噜噜成人av农村| 日韩毛片视频在线看| 精品噜噜噜噜久久久久久久久试看| gogo大胆日本视频一区| 日本成人在线网站| 亚洲欧美日韩小说| 久久久无码精品亚洲日韩按摩| 色婷婷国产精品久久包臀| 国产成人久久精品77777最新版本| 亚洲一区二区影院| 国产精品久久久久影院老司| 久久综合九色综合97婷婷女人| 欧美做爰猛烈大尺度电影无法无天| 国产一区不卡精品| 日本大胆欧美人术艺术动态 | 日韩欧美的一区| 91成人免费在线| 高清不卡一二三区| 久久国产综合精品| 午夜av一区二区| 亚洲综合另类小说| 亚洲蜜桃精久久久久久久| 国产女同互慰高潮91漫画| 精品三级在线看| 欧美在线综合视频| 日本电影欧美片| 色悠悠亚洲一区二区| 成人免费视频国产在线观看| 精品一区二区三区免费毛片爱| 调教+趴+乳夹+国产+精品| 亚洲影视在线播放| 亚洲一区二区在线观看视频| 1000精品久久久久久久久| 国产日韩成人精品| 国产欧美日韩精品在线| 中文字幕巨乱亚洲| 最新热久久免费视频| 国产精品午夜久久| 国产精品毛片久久久久久| 久久精品网站免费观看| 国产欧美日韩精品在线| 国产精品乱码一区二三区小蝌蚪| 久久精品一区二区三区不卡牛牛 | 欧美一级艳片视频免费观看| 欧美精品三级日韩久久| 7777精品久久久大香线蕉| 欧美一级艳片视频免费观看| 日韩一区二区麻豆国产| 日韩欧美123| 国产欧美日韩在线观看| 中文字幕亚洲一区二区av在线 | 色婷婷精品大视频在线蜜桃视频| 色999日韩国产欧美一区二区| 91成人看片片| 美国毛片一区二区三区| 成人免费在线视频| 91黄视频在线观看| 欧美日韩高清一区| 26uuu亚洲| 亚洲欧美日韩国产中文在线| 亚洲成人自拍网| 欧美日本不卡视频| 91精品国产综合久久精品麻豆 | 日韩欧美国产1| 欧美极品另类videosde| 国产精品美女久久久久久久网站| 亚洲综合久久av| 九九在线精品视频| 99热精品一区二区| 欧美区在线观看| 中文子幕无线码一区tr| 一区二区三区精密机械公司| 男人操女人的视频在线观看欧美| 波多野结衣在线aⅴ中文字幕不卡| 欧美日韩精品欧美日韩精品一| 精品久久久久久久久久久久久久久久久| 国产欧美久久久精品影院| 亚洲精品乱码久久久久久久久| 久久丁香综合五月国产三级网站| 99久久99久久精品免费看蜜桃 | 捆绑变态av一区二区三区| 成人黄页在线观看| 日韩欧美一级片| 一区二区三区欧美亚洲| 国产真实精品久久二三区| 色菇凉天天综合网| 国产调教视频一区| 美女一区二区久久| 91麻豆视频网站| 国产午夜亚洲精品羞羞网站| 青青国产91久久久久久| 91免费在线视频观看| 久久久久久久网| 日韩精品欧美精品| 99精品久久免费看蜜臀剧情介绍| 日韩一级大片在线| 天天色天天爱天天射综合| 成人黄色av电影| 精品少妇一区二区三区视频免付费| 一区二区三区在线免费观看| 高清视频一区二区| 精品日韩99亚洲| 免费成人美女在线观看.| 欧美性xxxxxx少妇| 中文字幕一区二区视频| 国产盗摄一区二区三区| 欧美成人r级一区二区三区| 亚洲一区免费观看| 在线看日本不卡| 亚洲最大成人综合| 91视视频在线直接观看在线看网页在线看 | 91麻豆精品一区二区三区| 国产亚洲欧美日韩在线一区| 男人操女人的视频在线观看欧美| 欧美喷水一区二区| 亚洲成人av在线电影| 欧美日韩成人综合天天影院| 亚洲一区视频在线| 不卡欧美aaaaa| av中文字幕一区|