• 5174阅读
  • 0回复

与qtservice集成后出现的奇怪问题 [复制链接]

上一主题 下一主题
离线weihao.ma
 
只看楼主 正序阅读 楼主  发表于: 2010-12-28
各位QT朋友大家好,最近小弟在WINDOWS下实现了一个服务,该服务是在qtservice基础上实现的,已基本实现了安装、卸载、启动等服务操作,但在实现过程中发现了奇怪的问题,程序安装和卸载过程可以利用qtcreator进行单步调试,并且利用qxtLog也能正常显示日志,但服务的启动操作qtcreator和qxtLog都不能跟踪和显示日志,这让我在开发程序遇到问题时非常痛苦。

我怀疑是qtservice的问题,就看了qtservice的源码,发现其在启动某个服务时,qtservice是通过先服务名从服务管理器中搜索出该进程后,再调用pStartService(hService, args.size(), argv.data()),程序进入该pStartServiceAPI后,dbg就跟踪不了。

// Open the Service Control Manager
    SC_HANDLE hSCM = pOpenSCManager(0, 0, SC_MANAGER_CONNECT);
    if (hSCM) {
        // Try to open the service
        SC_HANDLE hService = pOpenService(hSCM, (wchar_t *)d->serviceName.utf16(), SERVICE_START);
        if (hService) {
            QVector<const wchar_t *> argv(args.size());
            for (int i = 0; i < args.size(); ++i)
                argv = (const wchar_t*)args.at(i).utf16();
            if (pStartService(hService, args.size(), argv.data()))
                result = true;
            pCloseServiceHandle(hService);
        }
        pCloseServiceHandle(hSCM);
    }

估计是不同进程导致dbg或qxtLog跟踪不了。不知道大家是否遇到过这样的问题?有何解决方案
快速回复
限100 字节
 
上一个 下一个