驱动里面 StartService 返回错误代码 3 ,msdn说是 ERROR_PATH_NOT_FOUND

你妹的特盗不 2010-03-23 07:31:16
rt

但我debug时,我的path是正常的,直接放在直址栏,就能访问到那个文件

怎么解,谢谢
...全文
847 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
你妹的特盗不 2010-04-02
  • 打赏
  • 举报
回复
没人遇到过吗?
你妹的特盗不 2010-03-30
  • 打赏
  • 举报
回复
再顶!!等结果
你妹的特盗不 2010-03-27
  • 打赏
  • 举报
回复
不清楚,特别的郁闷,不做成dll,就没问题....
一样的代码,啥都没有改
arong1234 2010-03-27
  • 打赏
  • 举报
回复
没搞过驱动,也许驱动有特殊限制
你妹的特盗不 2010-03-27
  • 打赏
  • 举报
回复
楼上二位,我把得到的path打印出来,是正确的,是绝对路径,

//AfxMessageBox(driverpath);
这个我注释掉了的,去掉就会显示path
然后用
GetCurrentDirectoryW(sizeof(sDir),sDir);

//GetModuleFileName(NULL,path.GetBuffer(MAX_PATH),MAX_PATH);//get current program full path
两种方法都试了,一样的报错,errorcode 3,在startservice的时候

代码不做成dll,就工作,做成dll就不工作,

我的dll里面是这样做的,

里面有一个class,然后导出函数里面就是直接class的实例.方法


//象这样的,theApp是class的实例
DllExport bool WINAPI Install(void)
{
return theApp.Load_Driver()&&theApp.Init_Driver();
}
ronghaoyue 2010-03-27
  • 打赏
  • 举报
回复
建议用GetModuleFileName,在dll中可以这样
if( !GetModuleFileName( AfxGetInstanceHandle(), szPath, MAX_PATH ) )
AfxMessageBox(_T("error"));
arong1234 2010-03-27
  • 打赏
  • 举报
回复
1. 避免使用带W后缀的函数
2. 打印出你最后得到的路径,看看你到底得到什么
[Quote=引用 14 楼 lfs09 的回复:]
引用 13 楼 arong1234 的回复:
任何情况都不要用“当前目录”作为路径的起点,因为对于同一个程序,它的当前路径可以是任意位置!
你需要使用GetModuleFileName得到路径,并计算出实际的路径才行

引用 11 楼 lfs09 的回复:
路径是这样得到的


C/C++ code

GetCurrentDirectoryW(sizeof(sDir),sDir……
[/Quote]
你妹的特盗不 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 arong1234 的回复:]
任何情况都不要用“当前目录”作为路径的起点,因为对于同一个程序,它的当前路径可以是任意位置!
你需要使用GetModuleFileName得到路径,并计算出实际的路径才行

引用 11 楼 lfs09 的回复:
路径是这样得到的


C/C++ code

GetCurrentDirectoryW(sizeof(sDir),sDir);

//GetModuleFileNam……
[/Quote]

两种方法都试了,一样的现象,郁闷中,不作成dll,同样的代码正常工作
arong1234 2010-03-26
  • 打赏
  • 举报
回复
任何情况都不要用“当前目录”作为路径的起点,因为对于同一个程序,它的当前路径可以是任意位置!
你需要使用GetModuleFileName得到路径,并计算出实际的路径才行
[Quote=引用 11 楼 lfs09 的回复:]
路径是这样得到的


C/C++ code

GetCurrentDirectoryW(sizeof(sDir),sDir);

//GetModuleFileName(NULL,path.GetBuffer(MAX_PATH),MAX_PATH);//get current program full path
//path.ReleaseBuffer();
……
[/Quote]
你妹的特盗不 2010-03-26
  • 打赏
  • 举报
回复
再頂下 sdafdasf
你妹的特盗不 2010-03-24
  • 打赏
  • 举报
回复
路径是这样得到的


GetCurrentDirectoryW(sizeof(sDir),sDir);

//GetModuleFileName(NULL,path.GetBuffer(MAX_PATH),MAX_PATH);//get current program full path
//path.ReleaseBuffer();
//path.Delete(path.ReverseFind('\\'),path.GetLength()-path.ReverseFind('\\'));

//AfxMessageBox(sDir);
driverpath.Format(_T("%s%s"),sDir,servicePath);
//AfxMessageBox(driverpath);

arong1234 2010-03-24
  • 打赏
  • 举报
回复
你要不说明在你调用什么代码遇到这个错误,以及你所谓的的“正确”的path到底是什么,估计谁也不知道你怎么错的
而且:如果同样的path放到地址栏正确,写在代码就必然错误。例如c:\windows应该在代码里是c:\\windows
[Quote=引用楼主 lfs09 的回复:]
rt

但我debug时,我的path是正常的,直接放在直址栏,就能访问到那个文件

怎么解,谢谢
[/Quote]
哈利路亚1874 2010-03-24
  • 打赏
  • 举报
回复

BOOL StartService(
SC_HANDLE hService, // handle to service
DWORD dwNumServiceArgs, // number of arguments
LPCTSTR *lpServiceArgVectors // array of arguments
);

这个函数需要路径么?
可能是你在创建服务的时候哦,\\??\\+你的绝对路径就可以了!
你妹的特盗不 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tr1j5n 的回复:]
LZ的语文很成问题。压根不知道你在说什么,还有,能不能少打点错别字并清楚地描述问题?
[/Quote]
恩恩恩,改进改进改进

再说下

我有一个class a ,用于加载驱动,及对驱动的一些操作,里面有加载驱动的代码 象createservice,openservice,startservice等等,
然后这个class直接放在我的PROJECT里面,用class 的实例去操作,是正常工作的

但我把class a做一个dll的动态库文件,然后我的project去加载这个DLL文件,就在 startservice 报错,说 ERROR_PATH_NOT_FOUND
然后我的驱动文件的路径是绝对路径
这个路径是正确的,直接复制到地址栏是可以访问这个文件的
然后,主程式,DLL文件,驱动文件,都在同一个目录

还没说清楚,我也没法了
Tr1j5n 2010-03-24
  • 打赏
  • 举报
回复
LZ的语文很成问题。压根不知道你在说什么,还有,能不能少打点错别字并清楚地描述问题?
你妹的特盗不 2010-03-24
  • 打赏
  • 举报
回复
以上两位,PATH是绝对正确,放在地址栏可以访问到的

使用驱动的代码直接放在项目里面,不做成 DLL,也正确,但是做成DLL就错误,路进是绝对路进
bilaopao 2010-03-24
  • 打赏
  • 举报
回复
\\?
Tr1j5n 2010-03-24
  • 打赏
  • 举报
回复
但我debug时,我的path是正常的,直接放在直址栏,就能访问到那个文件?

没看懂
你妹的特盗不 2010-03-24
  • 打赏
  • 举报
回复
补充下,这个调用 是在 dll文件里面调用
直接写在project里面,用class不出错
你妹的特盗不 2010-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jingzhongrong 的回复:]
驱动里面能用StartService?
[/Quote]

不好意思说错了,是在使用驱动的cpp文件里面
加载更多回复(1)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧