• 这些天很忙,写一个类似防火墙的东西在WINSOCK2 SPI上做DLL,终于把问题解决了,现提供完整C++项目下载


    总结一下经验,其实网上有很多介绍(也贴出了很多代码,可惜这些代码都或多或少的存在一些问题),笔者当时碰到的一个问题是当操作系统异常中断(掉电等等),系统再次启动的时候卡在dll,无法启动,这是一个很大的问题,原来的代码参考了费尔防火墙那种强写注册表的方式,事实证明这种方式是不妥当,在VISTAS上无法运行,于是用系统方法WSCInstallProvider,使用了网上的一些代码,结果dll安装老是不对,也不能完全解决无法启动问题,打开一个新IE结果整个控制台死了.

          这几天千辛万苦终于解决了,总结了一些经验:

          1.WSCInstallProvider等方法是UNICODE编码,注意了你的项目要么是完完全全的UNICODE,要么使用WCHAR,wcscpy等UNICODE的方法和变量(局部使用UNICODE不取可,我当时抄网上的代码就是这种,使用TCHAR,_tcscpy的,后来发现混合编码编程中,宏定义在VS2005中会发生不可预料的编译,也许是太混乱了).

          2.dll中过多的使用了InitializeCriticalSection等LOCK导致dll在加载的时候死锁

          3.dll中使用了一些上层的东西,而dll本身是运行在下层,这些上层东西在系统重启动的时候无法初始化通过.

    改天再写一个简易版代码发上来.  今天终于有空了,现提供完整项目下载.部分代码来自网上,经过我的调试和修改.

    SPI 程序 下载

    安装程序  下载

  • 相关阅读:
    新购服务器流程
    nginx代理证书使用方法
    一键部署lnmp脚本
    mysql主从库配置读写分离以及备份
    Linux入门教程(更新完毕)
    Git 工作流程
    Git远程操作
    常用Git命令
    js数组去重
    Sublime Text设置快捷键让html文件在浏览器打开
  • 原文地址:https://www.cnblogs.com/legahero/p/SPI.html
Copyright © 2020-2023  润新知