类似于这样: XXX_YYY_PgSql †↡ԟҰ 本来只依赖于XXX_YYY_PgSql,结果多了一个乱码的依赖,导致服务无法正常启动。
创建服务是用windows的api方法CreateService创建的。
msdn原文是这样写的: ----------------------- [in, optional] lpDependencies
A pointer to a double null-terminated array of null-separated names of services or load ordering groups that the system must start before this service can be started. ----------------------- lpDependencies是一个指针,指针指向了一个以’\0\0’结尾,并且以’\0’分割开的字符串,由’\0’分割开的字符串为依赖服务的名字。
比如,如果设置当前服务依赖RPCSS 和DependTest服务的,则可以这样调用CreateService方法
::CreateService( hSCM, m_szServiceName, m_szServiceName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, szFilePath, NULL, NULL, _T("RPCSS\0DependTest\0"), NULL, NULL); 由于C字符串自身会以’\0’结尾,所以字符串内容中的结尾处只需写一个’\0’。 ------------------------------ 下面是一个示例,说明如何构建一个双重空字符终止的依赖关系名称数组:
c++ LPWSTR lpDependencies = L"Service1\0Service2\0\0"; 在上面的示例中,lpDependencies 是一个 Unicode 字符串指针,它包含两个依赖关系名称 "Service1" 和 "Service2"。这两个名称之间使用空字符(null)进行分隔,并在最后使用两个连续的空字符(null)作为终止标志。
|