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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? eventlogthreads.c

?? 讀系統(tǒng)日志,功能強(qiáng)大喲
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include "EventLogThreads.h"
#include "_Constants.h"
#include "_GlobalVars.h"
#include "_Utils.h"
#include "SysMain.h"
#include "resource.h"
#include <ctype.h>

#define MAX_MSG_LENGTH 1024

unsigned int __stdcall 
FillEventLogList(LPVOID lpParam)
{
	EVENTLOGFILTER *pelf = 0;
	int nRetVal = 0;
	HWND hParentWnd = 0, hwndDlg = 0, hwndLV = 0, hwndProgr = 0;
	HANDLE hEventLog = 0;
	DWORD dwEventLogRecords = 0, dwOldestEventLogRecord = 0, dwEvLogCounter = 0, dwNumberOfBytesToRead = 0, 
		dwBytesRead = 0, dwMinNumberOfBytesNeeded = 0, dwCancel = 0, dwClose = 0;
	LPVOID lpEventLogRecordBuffer = 0;
	TCHAR chFakeBuffer;
	BOOL bRetVal = FALSE;
	BOOL fExit = FALSE;
	UINT uStep = 0, uStepAt = 0, uPos = 0, uOffset = 0;
	TCHAR lpUNCServerName[_MAX_PATH + 1], lpszEventLogSourceName[_MAX_PATH + 1], lpszErrMsg[1024];

	// get thread parameter structure address...
	pelf = (EVENTLOGFILTER *)lpParam;
	// ...and retrieve the appropriate handles
	hwndDlg	= pelf->hwndDlg;
	hwndLV	= pelf->hwndLV;
	hwndProgr = pelf->hwndProgr;

	// get parent window...
	hParentWnd = GetParent(hwndDlg);
	// ...and set user data to 1 (the window has thread running) - will be reset to 0 when thread will terminate
	SetWindowLong(hParentWnd, GWL_USERDATA, (LONG)pelf); 

	// resize dialog
	MDIChild_ResizeDlg(hwndDlg, TRUE);

	// format UNC machine name to work with
	wsprintf(lpUNCServerName, _T("\\\\%s"), pelf->lpszComputerName);

	// establish what kind of event log section will show the list
	if(g_fApplication)
		_tcscpy(lpszEventLogSourceName, _T("Application"));				//	APPLICATION
	else if(g_fSystem)
		_tcscpy(lpszEventLogSourceName, _T("System"));					//	SYSTEM
	else if(g_fSecurity)
		_tcscpy(lpszEventLogSourceName, _T("Security"));				//	SECURITY
	else if(g_fCustom)
		_tcscpy(lpszEventLogSourceName, pelf->lpszCustomEventFileName);	//	CUSTOM
	else
	{
		nRetVal = -1;
		goto _cleanup_;
	}

	dwCancel = WaitForSingleObject(pelf->hCancelEvent, 0);
	dwClose = WaitForSingleObject(pelf->hCloseEvent, 0);
	while(!fExit)
	{
		if(g_fCustom)
			hEventLog = OpenBackupEventLog((LPCTSTR)lpUNCServerName, (LPCTSTR)lpszEventLogSourceName);
		else
			hEventLog = OpenEventLog((LPCTSTR)lpUNCServerName, (LPCTSTR)lpszEventLogSourceName);

		if(hEventLog)
		{
			if(GetNumberOfEventLogRecords(hEventLog, &dwEventLogRecords) && 
				GetOldestEventLogRecord(hEventLog, &dwOldestEventLogRecord))
			{
				SendMessage(hwndProgr, PBM_SETRANGE, (WPARAM)0, (LPARAM)MAKELPARAM(0, 100));
				uStepAt = (dwEventLogRecords / 100) + 1;

				for(dwEvLogCounter = dwOldestEventLogRecord; 
					dwEvLogCounter < (dwOldestEventLogRecord + dwEventLogRecords); 
					dwEvLogCounter++)
				{
					uStep++;
					if(uStep % uStepAt == 0)
						hwndProgr && SendMessage(hwndProgr, PBM_SETPOS, (WPARAM)++uPos, 0);

					dwCancel = WaitForSingleObject(pelf->hCancelEvent, 0);
					if(dwCancel == WAIT_OBJECT_0)
						goto _canceled_;
					dwClose = WaitForSingleObject(pelf->hCloseEvent, 0);
					if(dwClose == WAIT_OBJECT_0)
						goto _close_;

					lpEventLogRecordBuffer		= (LPVOID)&chFakeBuffer;
					dwNumberOfBytesToRead		= 1;
					dwMinNumberOfBytesNeeded	= 1;

	_retry_:
					bRetVal = ReadEventLog(hEventLog, EVENTLOG_SEEK_READ | EVENTLOG_FORWARDS_READ, dwEvLogCounter, 
						lpEventLogRecordBuffer, dwNumberOfBytesToRead, &dwBytesRead, &dwMinNumberOfBytesNeeded);

					if(!bRetVal)
					{
						g_dwLastError = GetLastError();

						if(g_dwLastError == ERROR_INSUFFICIENT_BUFFER)
						{
							lpEventLogRecordBuffer = (LPVOID)GlobalAlloc(GPTR, dwMinNumberOfBytesNeeded);
							if(lpEventLogRecordBuffer == (void *)0)
								goto _allocationfailure_;

							dwNumberOfBytesToRead = dwMinNumberOfBytesNeeded;
							goto _retry_;
						}
						else
							goto _unknownerror_;
					}
					else
					{
						PEVENTLOGRECORD pELR = 0;
						TCHAR *lpszSourceName = 0, lpszUserName[_MAX_PATH + 1], *lpszComputerName = 0,
							lpszRefDomainName[_MAX_PATH + 1], *szSIDType = 0, *szSIDName = 0, sz2[32],
							*szExpandedString = 0, szSubmitTime[32], szWriteTime[32];
						DWORD dwSourceNameLen = 0, dwComputerNameLen = 0, cbName = _MAX_PATH + 1, 
							cbRefDomainName = _MAX_PATH + 1, dwSIDTypeLen = 0, dwSidSize = 0, dwEventTypeLen = 0;
						PSID pUserSID = 0;
						SID_NAME_USE _SidNameUse = (SID_NAME_USE)(SidTypeUser - 1);
						BOOL bRetVal = FALSE;
						LPBYTE pStrings = 0, pData = 0;
						UINT x = 0, uSize, uStringOffset, uStepOfString = 0, uImage = 0;

						pELR	= (PEVENTLOGRECORD)lpEventLogRecordBuffer;

						uOffset	= sizeof(EVENTLOGRECORD);
						lpszSourceName = (TCHAR *)GlobalAlloc(GPTR, (_MAX_PATH + 1) * sizeof(TCHAR));
						strcpy(lpszSourceName, (LPTSTR)((LPBYTE)pELR + uOffset));
						dwSourceNameLen = strlen(lpszSourceName);

						uOffset	+= strlen(lpszSourceName) + sizeof(TCHAR);
						lpszComputerName = (TCHAR *)GlobalAlloc(GPTR, (_MAX_PATH + 1) * sizeof(TCHAR));
						strcpy(lpszComputerName, (LPTSTR)((LPBYTE)pELR + uOffset));
						dwComputerNameLen = strlen(lpszComputerName);

						uOffset += strlen(lpszComputerName) + sizeof(TCHAR);

						dwSIDTypeLen = 32;
						szSIDType = (TCHAR *)GlobalAlloc(GPTR, (dwSIDTypeLen + 1) * sizeof(TCHAR));

						if(pELR->UserSidLength > 0)
						{
							pUserSID = (SID *)GlobalAlloc(GPTR, pELR->UserSidLength);
							memcpy(pUserSID, (PSID)((LPBYTE)pELR + pELR->UserSidOffset), pELR->UserSidLength);
							
							cbName = cbRefDomainName = _MAX_PATH + 1;
							*lpszRefDomainName = *lpszUserName = '\0';

							bRetVal = LookupAccountSid(0, pUserSID, 
								lpszUserName, &cbName, 
								lpszRefDomainName, &cbRefDomainName, 
								&_SidNameUse);

							if(bRetVal)
							{
								if(bRetVal)
								{
									dwSIDTypeLen = 32;
									GetNameUse(_SidNameUse, szSIDType, &dwSIDTypeLen);

									dwSidSize = (15 + 12 + (12 * (*GetSidSubAuthorityCount(pUserSID))) + 1) * sizeof(TCHAR);
									szSIDName = (TCHAR *)GlobalAlloc(GPTR, (dwSidSize + 1) * sizeof(TCHAR));
									ConvertSid(pUserSID, szSIDName, &dwSidSize); 
								}
								else
								{
									strcpy(lpszRefDomainName, "N/A");
									strcpy(lpszUserName, "N/A");
									strcpy(szSIDType, "N/A");
								}
							}
							else
							{
							}
						}
						else
						{
							strcpy(lpszRefDomainName, "N/A");
							strcpy(lpszUserName, "N/A");
							strcpy(szSIDType, "N/A");
						}

						uSize = 0, uStringOffset = pELR->StringOffset;
						uSize = pELR->DataOffset - pELR->StringOffset;

						// Strings
						if(uSize > 0)
						{
							pStrings = (LPBYTE)GlobalAlloc(GPTR, uSize * sizeof(BYTE));
							memcpy(pStrings, (LPBYTE)pELR + uStringOffset, uSize);

							//	Strings
							uStepOfString = 0;
							szExpandedString = (TCHAR *)GlobalAlloc(GPTR, (uSize + MAX_MSG_LENGTH) * sizeof(TCHAR));
							for(x = 0; x < pELR->NumStrings; x++)
							{
								if(x == 0)
								{
									strcpy(szExpandedString, (TCHAR *)pStrings + uStepOfString);
									if(x < (UINT)pELR->NumStrings - 1)
										strcat(szExpandedString, ",");
								}
								else
									strcat(szExpandedString, (TCHAR *)pStrings + uStepOfString);

								uStepOfString = strlen((TCHAR *)pStrings + uStepOfString) + 1;
							}
						}

						//	Data
						pData = (LPBYTE)GlobalAlloc(GPTR, pELR->DataLength * sizeof(BYTE));
						memcpy(pData, (LPBYTE)((LPBYTE)pELR + pELR->DataOffset), pELR->DataLength);

						dwEventTypeLen = 32;
						GetEventLogType(sz2, pELR->EventType, &dwEventTypeLen);
						GetEventLogImage(&uImage, pELR->EventType);

						lstrcpyn(szSubmitTime, asctime(localtime((time_t *)&(pELR->TimeGenerated))), 25);
						lstrcpyn(szWriteTime, asctime(localtime((time_t *)&(pELR->TimeWritten))), 25);

						InsertRowInList(hwndLV, 9, &dwEvLogCounter, 
							lpszSourceName, 
							lpszUserName, 
							szSIDName, 
							lpszRefDomainName, 
							sz2, uImage, 
							szSubmitTime, szWriteTime);

						SafeDeletePointer(pData, pELR->DataLength);
						SafeDeletePointer(szExpandedString, uSize); 
						SafeDeletePointer(pStrings, pELR->DataOffset - pELR->StringOffset);
						SafeDeletePointer(szSIDName, dwSidSize + 1);
						SafeDeletePointer(szSIDType, dwSIDTypeLen + 1);
						SafeDeletePointer(lpszSourceName, dwSourceNameLen);
						SafeDeletePointer(lpszComputerName, dwComputerNameLen);
						SafeDeletePointer(pUserSID, pELR->UserSidLength);
						SafeDeletePointer(lpEventLogRecordBuffer, dwNumberOfBytesToRead);
					}
				}

				goto _cleanup_;
			}
			else
				ReportLastError(0, 0, TRUE);

	_unknownerror_:
			ReportLastError(lpszErrMsg, 0, TRUE);
			goto _cleanup_;

	_allocationfailure_:
			LoadString(g_hInstance, IDS_ERR_ALLOCATIONFAILURE, lpszErrMsg, 1024);
			MessageBox(0, lpszErrMsg, 0, MB_OK | MB_ICONSTOP);
			goto _cleanup_;

	_canceled_:
			nRetVal = 1;
			goto _cleanup_;

	_close_:
			nRetVal = 2;
			goto _cleanup_;

	_cleanup_:
			fExit = TRUE;

			CloseEventLog(hEventLog);
			hEventLog = 0;
		}
		else
		{
			fExit = TRUE;
			ReportLastError(0, 0, TRUE);
		}
	}

	// final cleanup on dialog
	if(nRetVal != 2)
	{
		if(IsWindow(hwndDlg))
			MDIChild_ResizeDlg(hwndDlg, FALSE);
		if(IsWindow(hParentWnd))
			SetWindowLong(hParentWnd, GWL_USERDATA, (LONG)0);
	}

	CloseHandle(pelf->hCancelEvent);
	CloseHandle(pelf->hCloseEvent);

	GlobalFree(pelf);
	pelf = 0;

	return nRetVal;
}

int CALLBACK 
CompareItems(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	int nIdx1	= (int)lParam1;
	int nIdx2	= (int)lParam2;
	
	int nRetVal = 0;
	
	DLGSORTDATA *pSortData	= (DLGSORTDATA *)lParamSort;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图色小说| 日韩欧美视频一区| 婷婷综合另类小说色区| 国产拍欧美日韩视频二区| 欧美丝袜丝交足nylons图片| 国产一区二区三区电影在线观看| 香蕉久久一区二区不卡无毒影院| 欧美国产精品一区二区| 日韩欧美色综合| 欧美电影一区二区三区| 91蜜桃视频在线| 大白屁股一区二区视频| 久久超碰97中文字幕| 性做久久久久久久免费看| 日韩免费电影网站| 韩国女主播成人在线观看| 亚洲电影一区二区三区| 国产精品麻豆久久久| 欧美精品一区二区高清在线观看| 欧美精品777| 在线免费不卡电影| 91麻豆精品一区二区三区| 成人国产精品免费| 国产精品亚洲视频| 激情综合网最新| 日韩va亚洲va欧美va久久| 亚洲国产精品一区二区尤物区| 国产精品美女一区二区三区| 久久久亚洲欧洲日产国码αv| 日韩一区二区三区免费观看 | www.亚洲精品| 国产一区二区三区高清播放| 加勒比av一区二区| 国产在线乱码一区二区三区| 久久aⅴ国产欧美74aaa| 麻豆国产精品一区二区三区 | 国产在线看一区| 国内欧美视频一区二区| 极品销魂美女一区二区三区| 国内成+人亚洲+欧美+综合在线| 久久精品国产久精国产| 狠狠v欧美v日韩v亚洲ⅴ| 国产乱子轮精品视频| 国产一二三精品| 国产v综合v亚洲欧| 99热国产精品| 91亚洲大成网污www| 色婷婷综合久久久中文字幕| 色噜噜狠狠成人网p站| 欧美性猛交xxxx乱大交退制版| 欧美日韩性生活| 91精品国产综合久久久久久久久久| 欧美久久久久久蜜桃| 6080yy午夜一二三区久久| 日韩视频一区在线观看| 国产日韩av一区二区| 中文字幕一区二区视频| 一区二区三区不卡在线观看 | 国产毛片精品一区| 成人综合婷婷国产精品久久免费| proumb性欧美在线观看| 91国产免费观看| 欧美一级淫片007| 日本一区二区免费在线| 亚洲乱码国产乱码精品精可以看| 亚洲va韩国va欧美va精品| 六月丁香综合在线视频| bt欧美亚洲午夜电影天堂| 欧美在线一二三四区| 精品国产91乱码一区二区三区 | 欧美久久久久久蜜桃| 久久婷婷国产综合国色天香| 中文字幕一区av| 日韩国产精品久久| 国产成人精品免费一区二区| 在线观看视频91| 久久视频一区二区| 亚洲专区一二三| 极品少妇一区二区| 色婷婷久久综合| 精品国产一区二区三区四区四| 国产精品家庭影院| 日韩中文欧美在线| 成人黄页毛片网站| 日韩一区二区在线观看| 亚洲色图制服诱惑| 国产露脸91国语对白| 色天使久久综合网天天| 精品国产1区二区| 亚洲成年人网站在线观看| 国产成人精品影院| 7777精品伊人久久久大香线蕉超级流畅| 久久精品人人做人人综合| 亚洲h精品动漫在线观看| 国产99一区视频免费 | 欧美激情在线一区二区三区| 亚洲国产成人tv| 波多野结衣在线一区| 欧美电视剧免费观看| 一区二区三区欧美久久| 国产不卡一区视频| 精品少妇一区二区三区在线播放| 一个色在线综合| 不卡的av在线| 国产欧美日韩精品在线| 美女免费视频一区| 欧美群妇大交群的观看方式| 国产精品女主播av| 国产精品系列在线播放| 日韩一级大片在线观看| 亚洲高清中文字幕| 91麻豆产精品久久久久久 | 一区二区激情视频| 99re亚洲国产精品| 国产三级一区二区三区| 久久66热偷产精品| 在线综合亚洲欧美在线视频| 一区二区三区日韩精品视频| 91麻豆福利精品推荐| 亚洲丝袜精品丝袜在线| 不卡av电影在线播放| 中文字幕av一区二区三区| 狠狠色狠狠色合久久伊人| 精品嫩草影院久久| 麻豆国产欧美日韩综合精品二区| 欧美精品自拍偷拍动漫精品| 亚洲国产你懂的| 欧美日韩你懂得| 亚洲bt欧美bt精品| 色视频欧美一区二区三区| 综合久久综合久久| 91视视频在线直接观看在线看网页在线看| 久久久久久久久久久99999| 国内精品第一页| 久久久久久**毛片大全| 国产成人高清视频| 中文字幕一区二区三区蜜月| 99re这里都是精品| 亚洲一区二区三区四区在线观看| 欧美日韩免费高清一区色橹橹 | 国产91精品在线观看| 久久久国产精华| 成人国产电影网| 亚洲欧美色一区| 欧美色爱综合网| 奇米四色…亚洲| 久久久久久亚洲综合| 不卡免费追剧大全电视剧网站| 亚洲婷婷综合色高清在线| 日本高清不卡视频| 日日摸夜夜添夜夜添亚洲女人| 51午夜精品国产| 久久66热re国产| 中文字幕av一区二区三区高| 91黄视频在线观看| 秋霞午夜av一区二区三区| 久久综合网色—综合色88| 高清不卡在线观看av| 亚洲欧美成aⅴ人在线观看| 欧美日韩日日摸| 国产精品一区二区三区网站| 亚洲欧洲三级电影| 欧美精品日日鲁夜夜添| 黄一区二区三区| 亚洲男人的天堂一区二区| 91精品视频网| 成人精品小蝌蚪| 香蕉乱码成人久久天堂爱免费| 精品久久久久久久一区二区蜜臀| 成人黄色小视频| 夜夜嗨av一区二区三区中文字幕| 在线不卡a资源高清| 国产成人超碰人人澡人人澡| 亚洲一区二区偷拍精品| 精品久久久久久久一区二区蜜臀| 91在线云播放| 美女在线视频一区| 亚洲特黄一级片| 日韩精品最新网址| 91麻豆自制传媒国产之光| 久久精品国产99| 一区二区三区日本| 国产人久久人人人人爽| 欧美日韩和欧美的一区二区| 国产成人免费视频| 午夜精品久久久久久久久久 | 制服丝袜成人动漫| 成人激情校园春色| 久久国产日韩欧美精品| 一区二区三区中文字幕电影| 精品国产百合女同互慰| 欧美日韩国产片| av成人免费在线| 国内精品伊人久久久久av一坑| 亚洲福利电影网| 自拍视频在线观看一区二区| 久久久久久久久97黄色工厂| 91精品综合久久久久久| 色综合久久久久综合| 成人免费看片app下载|