阅读:3461回复:7
请教关于在64位机环境下的驱动程序卸载问题!我想请教一下关于在64位机环境下的驱动程序卸载问题: 我在安装驱动的时候用GetSystemDirectory()取到的路径是:c:\\windows\\syswow64,但是系统在安装驱动的时候却把驱动程序拷贝到了c:\\windows\\system32\\drivers下。 我在卸载的时候用DeleteFile()函数删除sys文件,虽然我已经把路径写死为:c:\\windows\\system32\\drivers\\***.sys,而且这个文件的确在安装的时候已经被系统拷贝到这个目录下了,但是DeleteFile无法执行成功,getlasterror()= 2,也就是说系统认为这个文件不存在! 请问我应该用什么办法把这个sys文件删除掉? 非常感谢!! |
|
最新喜欢:Leopar... |
沙发#
发布于:2005-05-14 17:29
是不是在X64下的驱动文件保护已经加强,不支持直接用Delete函数去删除被保护的驱动文件。
|
|
板凳#
发布于:2005-05-16 09:08
我查找了微软最新的MSDN,没有对64位机的DeleteFile()API函数作特别说明,那么我应该用什么方法去删除呢?
|
|
地板#
发布于:2005-05-16 18:10
这个兄弟我也不太明白。没试过。不过在
MSDN: Platform SDK: 64-bit Windows Programming /File System Redirector 里面有所描述,也许你得用什么GetSystemWow64Directory()试试。 估计是32bit 的DeleteFile()函数,在64bit平台上运行时,自己把路径指向其他地方了。 |
|
地下室#
发布于: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 |
|
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 |
|
6楼#
发布于:2007-01-08 10:52
GetSystemDirectory()取到的路径是:c:\\windows\\syswow64?
估计你编译成了32位程序 |
|
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
|
|
|