ping235@sohu.co
驱动牛犊
驱动牛犊
  • 注册日期2005-02-24
  • 最后登录2005-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3461回复:7

请教关于在64位机环境下的驱动程序卸载问题!

楼主#
更多 发布于:2005-05-13 14:15

    我想请教一下关于在64位机环境下的驱动程序卸载问题:
    我在安装驱动的时候用GetSystemDirectory()取到的路径是:c:\\windows\\syswow64,但是系统在安装驱动的时候却把驱动程序拷贝到了c:\\windows\\system32\\drivers下。
    我在卸载的时候用DeleteFile()函数删除sys文件,虽然我已经把路径写死为:c:\\windows\\system32\\drivers\\***.sys,而且这个文件的确在安装的时候已经被系统拷贝到这个目录下了,但是DeleteFile无法执行成功,getlasterror()= 2,也就是说系统认为这个文件不存在!
     请问我应该用什么办法把这个sys文件删除掉?
     非常感谢!!

最新喜欢:

LeopardLeopar...
hunter_cao
驱动牛犊
驱动牛犊
  • 注册日期2005-05-14
  • 最后登录2008-05-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-14 17:29
是不是在X64下的驱动文件保护已经加强,不支持直接用Delete函数去删除被保护的驱动文件。
ping235@sohu.co
驱动牛犊
驱动牛犊
  • 注册日期2005-02-24
  • 最后登录2005-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-16 09:08
我查找了微软最新的MSDN,没有对64位机的DeleteFile()API函数作特别说明,那么我应该用什么方法去删除呢?
hunter_cao
驱动牛犊
驱动牛犊
  • 注册日期2005-05-14
  • 最后登录2008-05-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-16 18:10
这个兄弟我也不太明白。没试过。不过在
MSDN:  
Platform SDK: 64-bit Windows Programming /File System Redirector
里面有所描述,也许你得用什么GetSystemWow64Directory()试试。

估计是32bit 的DeleteFile()函数,在64bit平台上运行时,自己把路径指向其他地方了。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-06 14:11
操作确实被操作系统重定向了


对文件和注册表调用之前先调用Wow64DisableWow64FsRedirection即可

typedef BOOL (WINAPI *LPFN_Wow64RevertWow64FsRedirection)(PVOID OldValue);
static PVOID Wow64DisableWow64FsRedirectionOldValue = NULL;

BOOL MyWow64DisableWow64FsRedirection()
{
LPFN_Wow64DisableWow64FsRedirection fnWow64DisableWow64FsRedirection =
(LPFN_Wow64DisableWow64FsRedirection) GetProcAddress(GetModuleHandle(\"kernel32\"),
\"Wow64DisableWow64FsRedirection\"
);
if (fnWow64DisableWow64FsRedirection)
return fnWow64DisableWow64FsRedirection(&Wow64DisableWow64FsRedirectionOldValue);

return FALSE;
}

具体可以参考最新的msdn
linwn
驱动牛犊
驱动牛犊
  • 注册日期2002-11-10
  • 最后登录2015-01-27
  • 粉丝0
  • 关注0
  • 积分97分
  • 威望30点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-09 11:45
I had tried this before, encounter as same problem above,then I built my install program by 64-bit compiler,
It works correct in 64-bit XP without using \"Wow64DisableWow64FsRedirection \", maybe you could introduce my solution to decide your trouble.



linwn
GNiDiA
驱动小牛
驱动小牛
  • 注册日期2006-10-11
  • 最后登录2017-10-09
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望145点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-01-08 10:52
GetSystemDirectory()取到的路径是:c:\\windows\\syswow64?
估计你编译成了32位程序
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-01-19 06:54
basic line: do not use a 32bit process to install/uninstall drivers - a lot of limitations for 32bit process
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部