ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:54.50KB ,
资源ID:3115092      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3115092.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(深度剖析WinPcap之(八)——打开与关闭适配器(8).doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

深度剖析WinPcap之(八)——打开与关闭适配器(8).doc

1、深度剖析 WinPcap 之( 八)打开与关闭适配器(8) 2009-09-26 21:38:25标签:关闭 打开 适配器 推送到技术圈 版 权 声 明 : 原 创 作 品 , 允 许 转 载 , 转 载 时 请 务 必 以 超 链 接 形 式 标 明 文 章 原 始 出 处 、作 者 信 息 和 本 声 明 。 否 则 将 追 究 法 律 责 任 。http:/ PacketOpenAdapterNPF 函数函数 PacketOpenAdapterNPF()的作用是打开一个使用 NPF 设备驱动的适配器。该函数被 PacketOpenAdapter()与 AddAdapter()作为内部函数

2、调用。函数原型如下:LPADAPTER PacketOpenAdapterNPF(PCHAR AdapterNameA);参数 AdapterNameA 字符串包含待打开设备的名称。函数如果成功,返回一个已经正确初始化的 ADAPTER 对象的指针。否则返回 NULL。函数的主要代码如下:LPADAPTER PacketOpenAdapterNPF(PCHAR AdapterNameA)LPADAPTER lpAdapter;CHAR SymbolicLinkAMAX_PATH;/NPF_DRIVER_NAME 定义为“NPF“CHAR NpfDriverNameMAX_WINPCAP_KEY

3、_CHARS = NPF_DRIVER_NAME;CHAR NpfServiceLocationMAX_WINPCAP_KEY_CHARS;/*连接到服务控制管理器*/scmHandle = OpenSCManager(NULL, NULL, GENERIC_READ);if(scmHandle = NULL)/连接到服务控制管理器失败error = GetLastError();else/*检查 NPF 服务是否已经存在,*如果存在则接下来可以分配并初始化 ADAPTER 对象*/设置 NPF 服务的注册表位置StringCchPrintfA(NpfServiceLocation, size

4、of(NpfServiceLocation), “SYSTEMCurrentControlSetServices%s“, NpfDriverName);/检查 NPF 注册表的键值是已否存在,如果已经存在,/这意味着驱动已经安装,/我们不再需要调用 PacketInstallDriver()函数安装驱动程序KeyRes=RegOpenKeyExA(HKEY_LOCAL_MACHINE,NpfServiceLocation,0,KEY_READ,if(KeyRes != ERROR_SUCCESS)/NPF 注册表的键值不存在,调用 PacketInstallDriver()函数Result =

5、 PacketInstallDriver();else/NPF 注册表的键值已经存在,驱动已经安装Result = TRUE;RegCloseKey(PathKey);if (Result) /驱动已经存在,检查 NPF 服务是否正在运行/打开 NPF 服务svcHandle = OpenServiceA(scmHandle, NpfDriverName, SERVICE_START | SERVICE_QUERY_STATUS );if (svcHandle != NULL) /获得服务状态QuerySStat = QueryServiceStatus(svcHandle, if(!Quer

6、ySStat | SStat.dwCurrentState != SERVICE_RUNNING)/获得服务状态失败或驱动 NPF 没有运行,启动 NPF 服务if (StartService(svcHandle, 0, NULL)=0) /如果不是服务正在运行或服务已经存在的状态,/就处理错误,函数返回 NULLerror = GetLastError();if(error!=ERROR_SERVICE_ALREADY_RUNNING /驱动 NPF 已正常运行,关闭服务控制管理器的句柄CloseServiceHandle( svcHandle );svcHandle = NULL;else

7、/打开 NPF 服务失败error = GetLastError();SetLastError(error);elseif(KeyRes != ERROR_SUCCESS) /第一次安装驱动程序失败,并且 NPF 注册表的键值不存在/再次安装驱动Result = PacketInstallDriver();elseResult = TRUE;if (Result) /NPF 的驱动程序已存在/打开 NPF 服务svcHandle = OpenServiceA(scmHandle,NpfDriverName,SERVICE_START);if (svcHandle != NULL)/打开 NPF

8、 服务成功,获取 NPF 服务的状态QuerySStat = QueryServiceStatus(svcHandle, if(!QuerySStat | SStat.dwCurrentState != SERVICE_RUNNING)/获得服务状态失败或驱动 NPF 没有运行,启动 NPF服务if (StartService(svcHandle, 0, NULL)=0) /如果不是服务正在运行或服务已经存在的状态,/就处理错误,函数返回 NULLif(error!=ERROR_SERVICE_ALREADY_RUNNING /驱动 NPF 已正常运行,关闭服务控制管理器的句柄CloseSer

9、viceHandle( svcHandle );svcHandle = NULL;else/打开 NPF 服务失败,设置错误状态error = GetLastError();SetLastError(error);if (scmHandle != NULL) /关闭服务控制管理器的句柄CloseServiceHandle(scmHandle);/*分配 ADAPTER 结构体的的内存空间 */lpAdapter=(LPADAPTER)GlobalAllocPtr(GMEM_MOVEABLE | GMEM_ZEROINIT,sizeof(ADAPTER);if (lpAdapter=NULL)/

10、分配失败,函数返回 NULL;return NULL;/设置单个数据包发送的次数为一次lpAdapter-NumWrites=1;/从原始的设备名创建 NPF 设备的名称#define DEVICE_PREFIX “Device“if (LOWORD(GetVersion() = 4)/操作系统为 Windows NT 4.0、Windows 95、Windows 98、或 Windows Me 的处理elseif (strlen(AdapterNameA) strlen(DEVICE_PREFIX)StringCchPrintfA(SymbolicLinkA, MAX_PATH, “.Global%s“, AdapterNameA + strlen(DEVICE_PREFIX);elseZeroMemory(SymbolicLinkA, sizeof(SymbolicLinkA);-待续-本文出自 “千江月” 博客,请务必保留此出处 http:/

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。