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

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

?? mainfrm.cpp

?? WMD驅(qū)動編程,本人收集整理的10多個例子和編程環(huán)境配置文檔,特別是8139驅(qū)動,加了許多說明,并測試通過.
?? CPP
字號:
///////////////////////////////////////////////////////////////////////////////
//
//	(C) Copyright 1999 - 2000 Mark Roddy
//	All Rights Reserved
//
//	Hollis Technology Solutions
//	94 Dow Road
//	Hollis, NH 03049
//	info@hollistech.com
//
//	Synopsis: 
// 
//
//	Version Information:
//
//	$Header: /iphook/usr/IpMonitor/MainFrm.cpp 3     1/27/00 10:35p Markr $ 
//
///////////////////////////////////////////////////////////////////////////////
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "IpMonitor.h"
#include "MainFrm.h"
#include "winioctl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(START_HOOK, OnStartHook)
	ON_COMMAND(STOP_HOOK, OnStopHook)
	ON_UPDATE_COMMAND_UI(START_HOOK, OnUpdateStartHook)
	ON_UPDATE_COMMAND_UI(STOP_HOOK, OnUpdateStopHook)
	ON_MESSAGE(BUFFER_AVAILABLE_MSG, OnBufferMessage)
	//}}AFX_MSG_MAP
	// Global help commands
	ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFinder)
	ON_COMMAND(ID_HELP, CFrameWnd::OnHelp)
	ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp)
	ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpFinder)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	m_Enabled = FALSE;
	m_Started = FALSE;
	
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if ((theApp.hookDriver.handle() == INVALID_HANDLE_VALUE) ||
		(theApp.filterDriver.handle() == INVALID_HANDLE_VALUE)) {

		m_Started = FALSE;
		m_Enabled = FALSE;

	} else {

		m_Started = FALSE;
		m_Enabled = TRUE;

	}

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


void CMainFrame::OnStartHook() 
{
	if (theApp.hookDriver.handle() == INVALID_HANDLE_VALUE) {

		m_Enabled = FALSE;

		m_Started = FALSE;

		return;
	}

	if (m_Started) {

		return;

	}
	//
	// send the start ioctl
	//
	DWORD bytesReturned;
	BOOL result = 
		DeviceIoControl(theApp.hookDriver.handle(), 
						START_IP_HOOK,       // operation control code
						NULL,           // input data buffer
						0,         // size of input data buffer
						NULL,          // output data buffer
						0,        // size of output data buffer
						&bytesReturned,     // byte count
						NULL    // overlapped information
						);

	if (FALSE == result) {

		AfxErrorMessageBox(CString(_T("DeviceIoControl START_IP_HOOK")), GetLastError());

		return;
	}

	//
	// prime the pump with some buffers
	//
	if (FALSE == startSomeBuffers(4)) {
		//
		// ug, clean up the mess here
		//
		(void) DeviceIoControl(theApp.hookDriver.handle(), 
						STOP_IP_HOOK,       // operation control code
						NULL,           // input data buffer
						0,         // size of input data buffer
						NULL,          // output data buffer
						0,        // size of output data buffer
						&bytesReturned,     // byte count
						NULL    // overlapped information
						);
	} else {
		//
		// if that worked, then check and disable this menu item
		//
		m_Started = TRUE;
	}
	
}

void CMainFrame::OnStopHook() 
{
	if (theApp.hookDriver.handle() == INVALID_HANDLE_VALUE) {

		m_Started = FALSE;

		m_Enabled = FALSE;

		return;
	}

	if (!m_Started) {

		return;

	}
	//
	// send the stop ioctl
	//
	DWORD bytesReturned;
	BOOL result = 
		DeviceIoControl(theApp.hookDriver.handle(), 
						STOP_IP_HOOK,       // operation control code
						NULL,           // input data buffer
						0,         // size of input data buffer
						NULL,          // output data buffer
						0,        // size of output data buffer
						&bytesReturned,     // byte count
						NULL    // overlapped information
						);

	if (FALSE == result) {

		AfxErrorMessageBox(CString(_T("DeviceIoControl STOP_IP_HOOK")), GetLastError());

	} else {

		//
		// if that worked then check and disable this menu item
		//
		m_Started = FALSE;
		//
		// wait for our worker thread to terminate
		//
		DWORD waitResult = WaitForSingleObject(workerHandle, 5000);
		if (waitResult != WAIT_OBJECT_0) {
			//
			// terminate the worker thread with prejudice
			//
			TerminateThread(workerHandle, 1);
		}
		CloseHandle(workerHandle);
	}
	
}

void CMainFrame::OnUpdateStartHook(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_Enabled);
	pCmdUI->SetCheck(m_Started);
	
}

void CMainFrame::OnUpdateStopHook(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_Enabled);

	if (m_Enabled) {

		pCmdUI->SetCheck(!m_Started);
	
	} else {

		pCmdUI->SetCheck(FALSE);

	}	
	
}



IoContext::IoContext(UINT nbuffs)
{
	if (nbuffs < 1) {

		AfxErrorMessageBox(CString(_T("nBuffers too small:")), nbuffs);

		ExitProcess(1);
		//
		// not reached
		//
	}

	nbuffers = nbuffs;
	//
	// create an event
	//
	event = CreateEvent(NULL, TRUE, FALSE, NULL);
	if (event == NULL) {

		DWORD error = GetLastError();

		AfxErrorMessageBox(CString(_T("CreateEvent:")), error);

		ExitProcess(error);
		//
		// not reached
		//
	}

	rawBuffer = NULL;
	buffer = NULL;

}

IoContext::~IoContext()
{
	if (rawBuffer) {

		delete[] rawBuffer;
	}

	if (event) {

		CloseHandle(event);

	}
}

bool IoContext::init()
{
	rawBuffer = new UCHAR[sizeof(IPHOOK_BUFFER) + (sizeof(IPHOOK_DATA) * (nbuffers -1))];

	if (rawBuffer == NULL) {

		AfxErrorMessageBox(CString(_T("nBuffers too small:")), nbuffers);

		return false;
		//
		// not reached
		//
	}

	buffer = (IPHOOK_BUFFER*) rawBuffer;
	overlapped.hEvent = event;
	buffer->entries=nbuffers;
	buffer->valid = 0;
	buffer->tag = IPHOOK_BUFFER_TAG;
	memset(&buffer->buffer[0], 0, sizeof(IPHOOK_DATA) * nbuffers);
	return true;
}

DWORD WINAPI workerStart(
  LPVOID lpParameter   // thread data
)
{
	WIN_CONTEXT context  = *((WIN_CONTEXT *) lpParameter); // ignored for now

	//
	// until we get asked to stop,
	// produce numBufs, wait for completion or termination,
	// repeat as needed.
	//
	// we actually need to keep the buffers ordered, or else we
	// will have a re-ordering problem on the other side. The easiest
	// way to do that is to use only two buffers.
	//	
	IoContext buffArray[2] = { 100, 100 };

	//
	// prime the pump
	//
	DWORD bytesReturned;	

	while (*context.pStarted == TRUE) {

		for (UINT index = 0; index < 2; index++) {
			//
			// init allocates an io buffer and sets up the
			// contents of the buffer.
			//
			buffArray[index].init();
			
			BOOL result = 
				DeviceIoControl(theApp.hookDriver.handle(), 
								HOOK_THIS,       // operation control code
								NULL,           // input data buffer
								0,         // size of input data buffer
								buffArray[index].IoBuffer(),          // output data buffer
								buffArray[index].IoSize(),        // size of output data buffer
								&bytesReturned,     // byte count
								buffArray[index].over()    // overlapped information
							);
			if (!result) {

				AfxErrorMessage(CString(_T("DeviceIoControl HOOK_THIS: ")), GetLastError());

			}
		}
		//
		// as each request completes, poat it to the widow thread
		//
		for (index = 0; index < 2; index++) {

			BOOL result = 
				GetOverlappedResult(theApp.hookDriver.handle(), 
					buffArray[index].over(),
					&bytesReturned,
					TRUE);

			if (!result) {

				AfxErrorMessage(CString(_T("GetOverlappedResult: ")), GetLastError());
				//
				// we have to free the buffer?
				//
				buffArray[index].deleteBuffer();
				

			} else {
				//
				// post this to the window side
				//
				buffArray[index].releaseBuffer();

				PostMessage(context.mainwindow, 
					        BUFFER_AVAILABLE_MSG, (UINT) buffArray[index].IoBuffer(), 0);

			}


		}	


	}


	return 0;
}

BOOLEAN CMainFrame::startSomeBuffers(UINT numBufs)
{
	//
	// this function spawns a worker thread whose job it is
	// to feed the driver with buffers and wait for those buffers
	// to return.
	//
	m_context.numBufs = 2;
	m_context.mainwindow = GetSafeHwnd();
	m_context.pStarted = &m_Started;
	ASSERT(m_context.mainwindow);

	workerHandle = CreateThread(NULL, 0, workerStart, (PVOID) &m_context, 0, &workerId);

	if (workerHandle == NULL) {

		AfxErrorMessage(CString(_T("CreateThread: ")), GetLastError());

		return FALSE;
	}

	return TRUE;

}

afx_msg LRESULT CMainFrame::OnBufferMessage(WPARAM wParam, LPARAM lParam)
{
	//
	// just hand this to the view
	//
	CView* view = GetActiveView( );

	if (view) {

		view->PostMessage(BUFFER_AVAILABLE_MSG, wParam, lParam);
	}

	return 0;
}
///////////////////////////////////////////////////////////////////////////////
// 
// Change History Log
//
// $Log: /iphook/usr/IpMonitor/MainFrm.cpp $
// 
// 3     1/27/00 10:35p Markr
// Prepare to release!
//
///////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区精品| 奇米影视7777精品一区二区| 国产99久久久久| 国产亚洲欧洲一区高清在线观看| 狠狠色狠狠色综合系列| 中文字幕欧美日本乱码一线二线| 成人在线视频一区| 亚洲欧美一区二区三区极速播放| 91久久精品国产91性色tv| 亚洲一二三级电影| 欧美一二三区在线| 国产不卡高清在线观看视频| 中文字幕亚洲区| 欧美日韩精品欧美日韩精品 | 久久久www成人免费毛片麻豆| 国产成人综合网| 一区二区三区在线免费播放| 91精品国产色综合久久不卡电影| 激情伊人五月天久久综合| 亚洲欧洲精品天堂一级 | 国产aⅴ综合色| 亚洲精品欧美综合四区| 在线综合+亚洲+欧美中文字幕| 黄一区二区三区| 日本在线不卡一区| 欧美大度的电影原声| 91色porny| 久久er99精品| 一区二区三区四区在线免费观看| 欧美精品色一区二区三区| 国产一区三区三区| 一区二区三区在线播| 精品成人一区二区| 精品视频在线免费观看| 国产精品亚洲а∨天堂免在线| 亚洲综合图片区| 久久久久国产精品厨房| 欧美日韩免费观看一区三区| 国内精品伊人久久久久av一坑| 亚洲主播在线观看| 中文字幕+乱码+中文字幕一区| 欧美亚洲动漫制服丝袜| 国产91精品露脸国语对白| 亚洲va欧美va人人爽| 国产精品美女视频| 精品日韩av一区二区| 欧美日韩精品一区二区三区| 成人黄色大片在线观看| 精品一区二区免费看| 亚洲成va人在线观看| 综合中文字幕亚洲| 久久久久国产精品免费免费搜索| 欧美日韩一区二区在线视频| 91丝袜呻吟高潮美腿白嫩在线观看| 久久er99精品| 蜜臀久久久99精品久久久久久| 亚洲免费观看高清完整版在线| 国产午夜精品一区二区三区四区| 7777精品伊人久久久大香线蕉最新版| 91蜜桃在线免费视频| 成人免费毛片片v| 国产精品一区二区三区99| 美腿丝袜亚洲综合| 奇米色777欧美一区二区| 亚洲精品国产无套在线观| 欧美国产精品劲爆| 久久日一线二线三线suv| 日韩无一区二区| 在线成人午夜影院| 久久精品男人天堂av| 精品日韩一区二区三区| 日韩网站在线看片你懂的| 日韩一区二区免费电影| 欧美一级理论片| 日韩亚洲欧美一区| 日韩亚洲欧美高清| 精品伦理精品一区| 欧美成人精品3d动漫h| 欧美岛国在线观看| 久久免费视频一区| 久久精品视频免费| 国产精品电影一区二区| 最近日韩中文字幕| 一区二区三区四区蜜桃| 亚洲成人免费影院| 视频一区二区欧美| 久久黄色级2电影| 国产激情一区二区三区| 丁香婷婷综合激情五月色| 99re这里都是精品| 色成人在线视频| 欧洲人成人精品| 7777精品伊人久久久大香线蕉经典版下载 | 久久99久久精品| 国模娜娜一区二区三区| 成人精品国产一区二区4080| 色综合久久99| 欧美欧美欧美欧美| 精品国产免费人成电影在线观看四季 | 9久草视频在线视频精品| 91丝袜美腿高跟国产极品老师| 91福利国产精品| 日韩一区二区视频在线观看| 亚洲精品在线观看视频| 中文乱码免费一区二区| 亚洲一线二线三线视频| 麻豆精品久久精品色综合| 国产精品1024| 在线观看国产精品网站| 日韩欧美色综合网站| 国产清纯美女被跳蛋高潮一区二区久久w | 91精品国产91综合久久蜜臀| 久久免费看少妇高潮| 亚洲色图欧美在线| 免费成人美女在线观看| 成人app在线| 91麻豆精品国产| 国产精品免费av| 午夜电影久久久| 播五月开心婷婷综合| 欧美日韩小视频| 国产精品你懂的在线欣赏| 性久久久久久久久| 国产成人精品免费在线| 欧美夫妻性生活| 中文字幕一区免费在线观看| 久久精品国产99国产精品| 色综合久久久久网| 久久久.com| 蜜臀av性久久久久蜜臀aⅴ| 91网站在线观看视频| 久久久美女毛片| 婷婷久久综合九色综合绿巨人| 波波电影院一区二区三区| 欧美v亚洲v综合ⅴ国产v| 亚洲一区二区精品3399| 成人伦理片在线| 久久综合狠狠综合| 五月婷婷激情综合网| 99久久国产免费看| 国产视频一区二区三区在线观看| 视频一区中文字幕国产| 91国偷自产一区二区三区观看| 国产香蕉久久精品综合网| 日本欧美在线看| 精品1区2区3区| 亚洲另类春色校园小说| av动漫一区二区| 国产欧美综合在线观看第十页 | 另类的小说在线视频另类成人小视频在线 | 成人av电影在线| 久久久国产一区二区三区四区小说 | 日韩国产高清影视| 在线观看免费亚洲| 亚洲激情六月丁香| 91亚洲国产成人精品一区二区三| 国产午夜亚洲精品不卡| 国产综合色在线| 26uuu另类欧美| 国产综合成人久久大片91| 日韩亚洲欧美成人一区| 婷婷六月综合亚洲| 欧美男生操女生| 首页国产丝袜综合| 91精品国产免费| 欧美aⅴ一区二区三区视频| 91.麻豆视频| 日韩成人精品在线观看| 欧美一区二区三区成人| 免费成人在线影院| 日韩免费观看高清完整版| 久久精品国产秦先生| 日韩精品专区在线影院重磅| 精品在线视频一区| 国产调教视频一区| 不卡欧美aaaaa| 一区二区三区四区在线播放| 欧美日韩你懂得| 免费久久精品视频| 久久综合色天天久久综合图片| 国产乱人伦精品一区二区在线观看 | 欧美精品日韩综合在线| 日本不卡123| 久久免费看少妇高潮| 成人av高清在线| 亚洲一二三四久久| 日韩视频中午一区| 国产精品91xxx| 亚洲精选一二三| 欧美一级免费大片| 国产精品99久久久久久有的能看| 国产精品国产三级国产专播品爱网| 色视频成人在线观看免| 天堂va蜜桃一区二区三区漫画版| 欧美一级二级三级蜜桃| 国产91丝袜在线播放九色| 亚洲欧美激情在线| 91精品国产麻豆国产自产在线 | 亚洲欧美日韩久久| 欧美片网站yy|