WinIO 3.0 初始化失败若干原因

本文虽然是原创标题,实为整合,望作者见谅。

WinIO是什么?网上资料不少,不作解释。可http://www.internals.com/下载的winio3.0。

下载后的Binaries文件夹中包含WinIo32.dll,WinIo64.dll,WinIo32.sys,WinIo64.sys。

如果发现winIO在初始化的时候失败,这时候可能有三种原因。

当你使用的是64位系统时,初始化时需要使用WinIO64.sys,这一个系统驱动文件是需要数字签名的。

Winio64.sys没有正式的数字签名,只有测试的。需要修改一些东西,具体如下:

cmd->bcdedit /set testsigning on

然后修改WinIo64.sys的测试签名

1.打开 WinIO64.sys的属性框,翻到“数字签名”选项卡,点击“详细信息”
2.在新出来的对话框中点击“查看证书”
3.在又新出来的对话框中点击“安装证书”
4.点击“下一步”,然后选择“将所有的证书放入下列存储”
5.点击浏览,选择“受信任的根证书发布机构”

6.点击“下一步”,然后点击“完成”

7.在弹出的“安全性警告”对话框中选择“是”,才能导入成功

然后重启。

再调试程序,就可以成功初始化了。

当之前曾经安装过winIO时,初始化后如果调用GetLastError会得到错误代码1073,服务已经开启。此时只需要先将服务关闭即可,由于此服务在查看计算机服务管理和任务管理器都无法发现,所以需要使用程序来完成。

代码如下:

hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
hService = OpenService(hSCManager, L "WINIO" , SERVICE_STOP | DELETE);
ControlService(hService, SERVICE_CONTROL_STOP, NULL);
DeleteService(hService);
CloseServiceHandle(hSCManager);
这一段程序只需要运行一次即可。

.sys文件没有放在正确的位置,通过查看源代码可以发现,.sys文件应当位于.dll所在的目录下。当然这个也是可以自己修改的,其中涉及到的函数为GetDriverPath(),代码如下。

bool GetDriverPath()
{
PSTR pszSlash;

if (!GetModuleFileName(GetModuleHandle(NULL), szWinIoDriverPath, sizeof(szWinIoDriverPath)))
return false;

pszSlash = strrchr(szWinIoDriverPath, '\\');

if (pszSlash)
pszSlash[1] = 0;
else
return false;

strcat(szWinIoDriverPath, "winio.sys");

return true;
}

参考链接:http://hi.baidu.com/luckily513/item/e3df432c7e64ff9ab73263b0

                 http://www.cnblogs.com/wangqian0realmagic/archive/2012/03/26/2418671.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值