[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]创建服务时,依赖服务名称有乱码。CreateService的lpDependencies的写法

上一篇:[备忘]java序列化与反序列化时,增加字段的影响。
下一篇:[备忘]windows下,用reg命令添加multi值

添加日期:2023/7/25 19:04:47 快速返回   返回列表 阅读493次
类似于这样:
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)作为终止标志。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved