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

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

?? protoutils.cpp

?? VisualC++網絡設計配套光盤代碼第六章
?? CPP
字號:
////////////////////////////////////
// protoutils.cpp文件


#include <windows.h>
#include <winioctl.h>
#include <tchar.h>
#include <ntddndis.h>
#include <stdio.h>
#include "protoutils.h"


/////////////////////////////////////////////////////////////////
// 控制函數

BOOL ProtoStartService()
{
	BOOL bRet = FALSE;
	SC_HANDLE hSCM = NULL, hService = NULL;
	char szLinkName[] = "Packet";

	// 打開SCM管理器
	hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if(hSCM != NULL)
	{
		hService = ::OpenService(hSCM, szLinkName, SERVICE_ALL_ACCESS);
		if(hService != NULL)
		{
			if(!::StartService(hService, 0, NULL))
			{
				int nError = ::GetLastError();
				if(nError == ERROR_SERVICE_ALREADY_RUNNING)
				{
					bRet = TRUE;
				}
			}
			else
			{
				bRet = TRUE;
			}
		}
	}

	if(hService != NULL)
		::CloseServiceHandle(hService);
	if(hSCM != NULL)
		::CloseServiceHandle(hSCM);

	if(bRet)
		::Sleep(50);
	return bRet;
}

void ProtoStopService()
{
	SC_HANDLE hSCM = NULL, hService = NULL;
	char szLinkName[] = "Packet";

	// 打開SCM管理器
	hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if(hSCM != NULL)
	{
		hService = ::OpenService(hSCM, szLinkName, SERVICE_ALL_ACCESS);
		if(hService != NULL)
		{
				// 等待服務完全停止運行
			SERVICE_STATUS ss;
			::ControlService(hService, SERVICE_CONTROL_STOP, &ss);
		}
	}

	if(hService != NULL)
		::CloseServiceHandle(hService);
	if(hSCM != NULL)
		::CloseServiceHandle(hSCM);
}

HANDLE ProtoOpenControlDevice()
{
	// 打開驅動程序所控制設備的句柄
	HANDLE hFile = ::CreateFile(
		_T("\\\\.\\Packet"),
		GENERIC_READ | GENERIC_WRITE,
		0,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		NULL);

	return hFile;
}

BOOL CPROTOAdapters::EnumAdapters(HANDLE hControlDevice)
{
	DWORD dwBufferLength = sizeof(m_buffer);
	BOOL bRet = ::DeviceIoControl(hControlDevice, IOCTL_ENUM_ADAPTERS, 
			NULL, 0, m_buffer, dwBufferLength, &dwBufferLength, NULL);
	if(!bRet)
		return FALSE;
	
	// 保存適配器數量
	m_nAdapters = (ULONG)((ULONG*)m_buffer)[0];
	
	// 下面從m_buffer中獲取適配器名稱和符號連接名稱
	// 指向設備名稱
	WCHAR *pwsz = (WCHAR *)((ULONG *)m_buffer + 1);
	int i = 0;
	m_pwszAdapterName[i] = pwsz;
	while(*(pwsz++) != NULL)
	{
		while(*(pwsz++) != NULL)
		{ ; }
		
		m_pwszSymbolicLink[i] = pwsz + 12; // pwsz 指向"\DosDevices\Packet_{}", 加12是為了去掉"\DosDevices\"
		
		while(*(pwsz++) != NULL)
		{ ; }
		
		if(++i >= MAX_ADAPTERS)
			break;	
		
		m_pwszAdapterName[i] = pwsz;
	}
	
	return TRUE;
}

//////////////////////////////////////////////////////////

CAdapter::CAdapter()
{
	m_hAdapter = INVALID_HANDLE_VALUE;
}

CAdapter::~CAdapter()
{
	CloseAdapter();
}

BOOL CAdapter::OpenAdapter(LPCWSTR pwszSymbolicLink, BOOL bAsyn)
{
	char szFile[1024];
	wsprintf(szFile, _T("\\\\.\\%ws"), pwszSymbolicLink);
	
	// 打開到驅動程序所控制設備的句柄
	m_hAdapter = ::CreateFile(szFile,
		GENERIC_READ | GENERIC_WRITE,
		0,
		NULL,
		OPEN_EXISTING,
		bAsyn ? FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED : FILE_ATTRIBUTE_NORMAL,
		NULL);
	int n = ::GetLastError();
	return m_hAdapter != INVALID_HANDLE_VALUE;
}

void CAdapter::CloseAdapter()
{
	if(m_hAdapter != INVALID_HANDLE_VALUE)
	{
		::CloseHandle(m_hAdapter);
		m_hAdapter = INVALID_HANDLE_VALUE;
	}
}

BOOL CAdapter::ProtoRequest(PPROTOCOL_OID_DATA pOidData, BOOL bQuery)
{
	if(m_hAdapter == INVALID_HANDLE_VALUE)
		return FALSE;
	DWORD dw;
	BOOL bRet = ::DeviceIoControl(
		m_hAdapter, bQuery ? IOCTL_PROTOCOL_QUERY_OID : IOCTL_PROTOCOL_SET_OID,
		pOidData, sizeof(PROTOCOL_OID_DATA) -1 + pOidData->Length,
		pOidData, sizeof(PROTOCOL_OID_DATA) -1 + pOidData->Length, &dw, NULL);

	return bRet;
}

BOOL CAdapter::SetFilter(ULONG nFilters)
{
	PPROTOCOL_OID_DATA pOidData = (PPROTOCOL_OID_DATA)
						::GlobalAlloc(GPTR, (sizeof(PROTOCOL_OID_DATA) + sizeof(ULONG) - 1));

	pOidData->Oid = OID_GEN_CURRENT_PACKET_FILTER; 
	pOidData->Length = sizeof(ULONG);
	*((PULONG)pOidData->Data) = nFilters;

	BOOL bRet = ProtoRequest(pOidData, FALSE);

	::GlobalFree(pOidData);
	return bRet;
}

BOOL CAdapter::ResetAdapter()
{
	DWORD dw;
	BOOL bRet = ::DeviceIoControl(m_hAdapter, IOCTL_PROTOCOL_RESET, NULL, 0, NULL, 0, &dw, NULL);
	return bRet;
}

int CAdapter::RecieveData(PVOID pBuffer, int nLen, LPOVERLAPPED lpOverlapped)
{
	DWORD dwRead;
	if(::ReadFile(m_hAdapter, pBuffer, nLen, &dwRead, lpOverlapped))
		return dwRead;
	else
		return -1;
}

int CAdapter::SendData(PVOID pBuffer, int nLen, LPOVERLAPPED lpOverlapped)
{
	DWORD dwWrite;
	if(::WriteFile(m_hAdapter, pBuffer, nLen, &dwWrite, lpOverlapped))
		return dwWrite;
	else
		return -1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区| 成人性色生活片| 亚洲一区二区欧美激情| 18成人在线观看| ●精品国产综合乱码久久久久| 日本一区二区三区国色天香| 欧美国产精品中文字幕| 国产色婷婷亚洲99精品小说| 国产欧美一区二区三区在线老狼| 国产三级欧美三级日产三级99| 精品国产乱码久久久久久免费| 久久综合色一综合色88| 国产午夜精品一区二区三区视频| 国产女人aaa级久久久级| 国产精品久久久久久久久免费相片 | 亚洲手机成人高清视频| 中文字幕精品一区二区精品绿巨人 | 精品粉嫩超白一线天av| 日本一区二区免费在线| 亚洲欧洲成人精品av97| 一区二区三区在线视频免费| 亚洲一区二区欧美激情| 另类小说视频一区二区| 国产精品一区二区你懂的| 大胆欧美人体老妇| 欧美视频中文一区二区三区在线观看| 在线播放国产精品二区一二区四区| 欧美日韩精品一二三区| 日韩免费高清电影| 国产精品久久久久影院| 亚洲国产日韩a在线播放性色| 男人的天堂久久精品| 高清国产一区二区| 欧美性大战久久久久久久蜜臀| 欧美一区二区三区视频| 中文字幕一区二区三区不卡| 日韩不卡一区二区| 国产91精品免费| 欧美一区午夜视频在线观看| 国产精品视频线看| 日韩中文字幕区一区有砖一区| 国产91丝袜在线播放| 中文字幕在线观看不卡| 亚洲一级片在线观看| 成人黄色电影在线| 精品三级在线看| 午夜精品在线看| 91麻豆精品在线观看| 久久久久国产精品麻豆ai换脸| 亚洲无人区一区| 丁香一区二区三区| 在线亚洲一区二区| 国产欧美一区二区精品仙草咪| 亚洲精品久久久久久国产精华液| 蜜桃视频在线一区| 99久久免费视频.com| 欧美猛男男办公室激情| 日本一区二区三区电影| 国产女人18毛片水真多成人如厕| 天堂精品中文字幕在线| av电影天堂一区二区在线| 欧美一级黄色大片| 一区二区三区在线观看视频 | 亚洲免费观看在线观看| 视频一区二区国产| 波多野结衣亚洲| 日韩三级高清在线| 亚洲3atv精品一区二区三区| 国产999精品久久| 日韩丝袜情趣美女图片| 一区二区三区免费看视频| 欧美日韩高清一区| 亚洲欧洲综合另类| 不卡大黄网站免费看| 精品成人一区二区三区| 天天综合色天天综合色h| 色老汉一区二区三区| 中文字幕精品在线不卡| 精品在线观看视频| 欧美一区二区私人影院日本| 一级特黄大欧美久久久| 一本大道久久a久久精二百| 国产亚洲污的网站| 国产成人午夜99999| 亚洲精品一区二区三区蜜桃下载 | 国产精品网曝门| 国产传媒久久文化传媒| 精品国产欧美一区二区| 久久国产精品99精品国产| 欧美日韩亚洲高清一区二区| 国产精品美女久久久久久久| 懂色中文一区二区在线播放| 欧美激情一区二区三区蜜桃视频| 国内精品嫩模私拍在线| 久久综合久久鬼色| 国产精品综合一区二区三区| 久久蜜桃av一区精品变态类天堂 | 久久精品国产一区二区| 欧美一区二区精品久久911| 久久影院电视剧免费观看| 一本久久综合亚洲鲁鲁五月天| 成人免费在线视频| 91久久国产最好的精华液| 亚洲国产你懂的| 91麻豆精品91久久久久同性| 美女视频黄免费的久久 | 亚洲成人www| 欧美精品久久99| 视频在线观看国产精品| 日韩欧美在线网站| 国产成人精品午夜视频免费| 国产精品久久久久久久蜜臀| 91黄色免费版| 日本亚洲电影天堂| 久久久久久久国产精品影院| av成人免费在线观看| 亚洲黄色免费网站| 日韩欧美一区二区不卡| 岛国精品一区二区| 亚洲人123区| 久久久久久久综合狠狠综合| 丁香婷婷深情五月亚洲| 亚洲欧美国产毛片在线| 日韩午夜在线观看视频| 在线观看www91| 国产大陆精品国产| 日韩精品三区四区| 中文字幕在线一区免费| 91麻豆精品国产自产在线| 成人国产一区二区三区精品| 亚洲成av人片一区二区三区| 久久久久高清精品| 欧美午夜精品一区二区蜜桃| 青青草成人在线观看| 亚洲三级视频在线观看| 精品国产一区二区三区不卡| 91丨porny丨中文| 国产一区中文字幕| 日韩极品在线观看| 亚洲欧美日韩电影| 国产农村妇女精品| 欧美一级在线免费| 日韩欧美在线影院| 99re这里都是精品| 久久97超碰国产精品超碰| 亚洲一区二区三区中文字幕在线| 国产色婷婷亚洲99精品小说| 欧美一级欧美三级| 欧美日韩国产精品成人| 色婷婷久久综合| 不卡一区二区三区四区| 蜜桃视频在线一区| 午夜精品123| 亚洲国产cao| 亚洲精品亚洲人成人网在线播放| 国产日韩欧美亚洲| 精品国产区一区| 日韩一区二区高清| 91精品久久久久久久99蜜桃| 91精品91久久久中77777| 国产suv一区二区三区88区| 成熟亚洲日本毛茸茸凸凹| 国内精品写真在线观看| 久久成人免费日本黄色| 美女免费视频一区二区| 日韩午夜精品视频| 精品不卡在线视频| 国产成人综合精品三级| 亚洲国产一区二区视频| 欧美变态口味重另类| 欧美性大战久久| 97久久超碰国产精品电影| 日韩电影在线观看一区| 国产精品传媒在线| 国产精品国产三级国产普通话99 | 99久久综合国产精品| 亚洲男人都懂的| 久久精品一二三| 日韩一区二区三区观看| 欧美老女人第四色| 欧美日韩一区二区三区免费看 | 国产精品乱码人人做人人爱| 国产肉丝袜一区二区| 日本特黄久久久高潮| 亚洲一卡二卡三卡四卡五卡| 国产精品一区二区视频| 99久久综合色| 成人网在线免费视频| 石原莉奈一区二区三区在线观看 | 中文字幕一区二区视频| 欧美久久久久久久久中文字幕| 91亚洲国产成人精品一区二区三| 成人综合婷婷国产精品久久| 一区二区三区日韩| 国产亚洲欧美中文| 欧美大尺度电影在线| 日韩av中文在线观看| 亚洲aaa精品| 国产精品77777| 色综合久久精品|