• 这些天很忙,写一个类似防火墙的东西在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 程序 下载

    安装程序  下载

  • 相关阅读:
    Eclipse 修改编码方式
    mybits like查询写法
    Cannot convert value '0000-00-00 00:00:00' TIMESTAMP
    Homebrew简介和基本使用
    linux命令学习之:vim
    log4j配置详解
    log4j日志配置(按天/按日)
    Linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结(转)
    Linux挂载磁盘
    linux命令学习之:echo
  • 原文地址:https://www.cnblogs.com/legahero/p/SPI.html
Copyright © 2020-2023  润新知