robin112233
驱动牛犊
驱动牛犊
  • 注册日期2007-05-02
  • 最后登录2008-03-20
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:3504回复:4

StartService出错,新手,请大家指点一下

楼主#
更多 发布于:2007-05-03 01:57
  小弟刚刚接触WDM,拿书上的例子做实验,结果在启动服务时老是出错.用ddk制作的系统文件是ProcDrv.sys,win32应用程序部分代码如下:

#include<windows.h>
#include<winioctl.h>
#include<stdio.h>
#include"ProcDrv.h"
int main()
{
    char szDriverPath[256];
    char szLinkName[]="slNTProcDrv";
    char *p;
    ::GetFullPathName("ProcDrv.sys",256,szDriverPath,&p);
    SC_HANDLE hSCM=::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    if(hSCM==NULL)
    {
        printf("打开服务控制管理器失败,可能是因为没有Administrator权限\n");
        return -1;
    }
    SC_HANDLE hService=::CreateService(hSCM,szLinkName,szLinkName,SERVICE_ALL_ACCESS,
            SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,
            szDriverPath,NULL,0,NULL,NULL,NULL);
    if(hService==NULL)
    {
        int nError=::GetLastError();
        if((nError==ERROR_SERVICE_EXISTS)||(nError=ERROR_SERVICE_MARKED_FOR_DELETE))
        {
            hService=::OpenService(hSCM,szLinkName,SERVICE_ALL_ACCESS);
        }
    }
    if(hService==NULL)
    {
        printf("创建服务出错!\n");
        return -1;
    }
    if(!::StartService(hService,0,NULL))        //调用DriverEntry
    {
        int nError=::GetLastError();
        if(nError!=ERROR_SERVICE_ALREADY_RUNNING)
        {
            printf("启动服务出错!%d\n",nError);
            return -1;
        }
    }
运行结果提示:启动服务出错!123

我用winobj查看了一下,好象也没有找到对象名和连接名,返回的错误代码是123,Error Lookup中提示的是文件名、目录名或卷标语法不正确。
是不是需要对sys进行安装,还要修改注册表
刚刚学习WDM,请各位前辈指点一下
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-05-15 07:16
你的 .sys文件放在哪了?能保证windows 能找到吗?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
robin112233
驱动牛犊
驱动牛犊
  • 注册日期2007-05-02
  • 最后登录2008-03-20
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-16 23:27
谢谢楼上的,.sys的位置是没有问题的
错误已经解决,可能是因为我乱改注册表把系统给弄乱了
重装了系统之后又可以正常启动了
barbara
驱动牛犊
驱动牛犊
  • 注册日期2011-02-15
  • 最后登录2011-02-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2011-02-16 15:54
我也遇到了这种问题 我是在安装了驱动之后 在启动的时候也是startservice报文件名目录名或卷标语法不正确 请问除了重装系统 还能有什么解决方案吗
hansiyuan
驱动牛犊
驱动牛犊
  • 注册日期2009-05-18
  • 最后登录2011-02-21
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-02-20 22:18
最大的可能是驱动程序编译有问题 操作系统加载器未找到驱动入口 也就是DRIVERENTRY
如果你不是用WDK直接编译的!
游客

返回顶部