启动服务时报1053错误,请高手帮助,在线等候! 难道就没有一个对编server程序较熟悉的么我是完全按照步骤做过来的,现在我业安装好了这个server,可就是启动时回抱错最惨的是我在ServiceThread线程中把我的代码换做,最简单的发“嘟嘟嘟”声的代码,却可以成功,请高手帮助啊!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ServiceThread线程是什么线程,执行什么功能?出现这个错误是因为你没有及时地向服务管理器报告你的服务的状态。 ServiceThread函数包含有该服务真正要做的工作应该不回是没有及时报告服务状态,因为,我在ServiceThread里放入最简单的代码,比如发声,就可以正确执行啊,所以,应该不是你说的问题!加入发声的代码如下:DWORD ServiceThread(LPDWORD param){while (1){Beep(200,200);Sleep(beepDelay);}return 0;}// Initializes the service by starting its threadBOOL InitService(){DWORD id;// Start the service's threadthreadHandle = CreateThread(0, 0,(LPTHREAD_START_ROUTINE) ServiceThread,0, 0, &id(;if (threadHandle==0)return FALSE;else{runningService = TRUE;}}VOID ServiceMain(DWORD argc, LPTSTR *argv) {BOOL success;// immediately call Registration functionserviceStatusHandle=RegisterServiceCtrlHandler(SERVICE_NAME, (LPHANDLER_FUNCTION)Handler);if (!serviceStatusHandle) {terminate(GetLastError()); return;}// Notify SCM of progresssuccess=SendStatusToSCM(SERVICE_START_PENDING,NO_ERROR, 0, 1, 5000);//设置scm状态标志if (!success) {terminate(GetLastError()); return;}// create the termination eventterminateEvent = CreateEvent (0, TRUE, FALSE, 0);if (!terminateEvent) {terminate(GetLastError()); return;}// Notify SCM of progresssuccess = SendStatusToSCM(SERVICE_START_PENDING,NO_ERROR, 0, 2, 1000);//周期增长的为2if (!success) {terminate(GetLastError()); return;}// Check for startup paramsif (argc==2){int temp=atoi(argv[1]);if (temp<1000)beepDelay=DEFAULT_BEEP_DELAY;elsebeepDelay =temp;}// Notify SCM of progresssuccess=SendStatusToSCM(SERVICE_START_PENDING,NO_ERROR, 0, 3, 5000);if (!success) {terminate(GetLastError()); return;}// Start the service itselfsuccess=InitService();if (!success) {terminate(GetLastError()); return;}// The service is now running. // Notify SCM of progresssuccess=SendStatusToSCM(SERVICE_RUNNING,NO_ERROR, 0, 0, 0);if (!success) {terminate(GetLastError()); return;}// Wait for stop signal, and then terminateWaitForSingleObject (terminateEvent, INFINITE);terminate(0);}我只是在ServiceThread里换了代码而已了,请帮助看看了!! 您好: 服务没有得到控制请求,和您真正的执行服务线程没有关系,它是指服务控制面板上的,开始,停止,暂停,继续四个按钮按下后,你的程序没有及时的向服务控制器报告状态。 如果您的服务是用API完成的,那么您需要检查类似于Service_ctrl的控制响应函数,和类似于ReportStatusToSCMgr函数的状态报告函数。检查是否有遗漏报告的情况,另外,检查ServiceStart函数在设置SERVICE_START_PENDING状态时,是否给于了足够的初始化时间。 SentMessage() 奇怪的问题:运行时不正常,调试时又正常 ButtonST 请问下,我在http://www.codeproject.com/上看到一个Chevron的代码 ATL控件用参数返回数据的问题 多线程新手:关于MsgWaitForMutipleObjects 如何动态插入一个CPropertyPage,好比execel插入工作表 使用ActiveX控件会添加一系列的类到项目,有的多大几十个,使项目变得臃肿,有没有其他办法?在线等待,马上给分! 请教创建切分窗口的问题,急 关于return的函数返回值的问题 编译中的一个奇怪错误! 一个窗口滚动条的问题!!!!!!!
出现这个错误是因为你没有及时地向服务管理器报告你的服务的状态。
应该不回是没有及时报告服务状态,因为,我在ServiceThread里放入最简单的代码,比如发声,
就可以正确执行啊,所以,应该不是你说的问题!
加入发声的代码如下:
DWORD ServiceThread(LPDWORD param)
{
while (1)
{
Beep(200,200);
Sleep(beepDelay);}
return 0;
}// Initializes the service by starting its thread
BOOL InitService()
{
DWORD id;
// Start the service's thread
threadHandle = CreateThread(0, 0,
(LPTHREAD_START_ROUTINE) ServiceThread,
0, 0, &id(;
if (threadHandle==0)
return FALSE;
else
{
runningService = TRUE;}
}
VOID ServiceMain(DWORD argc, LPTSTR *argv)
{
BOOL success;
// immediately call Registration function
serviceStatusHandle=
RegisterServiceCtrlHandler(
SERVICE_NAME, (LPHANDLER_FUNCTION)Handler);
if (!serviceStatusHandle) {terminate(GetLastError()); return;}// Notify SCM of progress
success=SendStatusToSCM(SERVICE_START_PENDING,
NO_ERROR, 0, 1, 5000);//设置scm状态标志
if (!success) {terminate(GetLastError()); return;}// create the termination event
terminateEvent = CreateEvent (0, TRUE, FALSE, 0);
if (!terminateEvent) {terminate(GetLastError()); return;}// Notify SCM of progress
success = SendStatusToSCM(SERVICE_START_PENDING,
NO_ERROR, 0, 2, 1000);//周期增长的为2
if (!success) {terminate(GetLastError()); return;}// Check for startup params
if (argc==2){
int temp=atoi(argv[1]);
if (temp<1000)
beepDelay=DEFAULT_BEEP_DELAY;
else
beepDelay =temp;
}// Notify SCM of progress
success=SendStatusToSCM(SERVICE_START_PENDING,
NO_ERROR, 0, 3, 5000);
if (!success) {terminate(GetLastError()); return;}// Start the service itself
success=InitService();
if (!success) {terminate(GetLastError()); return;}// The service is now running.
// Notify SCM of progress
success=SendStatusToSCM(SERVICE_RUNNING,
NO_ERROR, 0, 0, 0);
if (!success) {terminate(GetLastError()); return;}// Wait for stop signal, and then terminate
WaitForSingleObject (terminateEvent, INFINITE);terminate(0);
}
我只是在ServiceThread里换了代码而已了,请帮助看看了!!
服务没有得到控制请求,和您真正的执行服务线程没有关系,它是指服务控制面板上的,开始,停止,暂停,继续四个按钮按下后,你的程序没有及时的向服务控制器报告状态。
如果您的服务是用API完成的,那么您需要检查类似于Service_ctrl的控制响应函数,和类似于ReportStatusToSCMgr函数的状态报告函数。检查是否有遗漏报告的情况,另外,检查ServiceStart函数在设置SERVICE_START_PENDING状态时,是否给于了足够的初始化时间。