代码如下:
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ TEXT("MyService"), MyServiceMain },
{ NULL, NULL }
};void main(int argc, char *argv[] )
{
if (! StartServiceCtrlDispatcher( DispatchTable ) )
SvcDebugOut(" [SEVERTEST] StartServiceCtrlDispatcher error = %d\n", GetLastError());
else
printf("OK");
}GetLastError返回1063,由于我是日文操作系统所以不知道是什么错误信息,请高手指点!
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ TEXT("MyService"), MyServiceMain },
{ NULL, NULL }
};void main(int argc, char *argv[] )
{
if (! StartServiceCtrlDispatcher( DispatchTable ) )
SvcDebugOut(" [SEVERTEST] StartServiceCtrlDispatcher error = %d\n", GetLastError());
else
printf("OK");
}GetLastError返回1063,由于我是日文操作系统所以不知道是什么错误信息,请高手指点!
解决方案 »
- CDaoWorkspace::RepairDatabase用法
- 哪位大侠能推荐有关多媒体编程的书吗?
- 如何初始化对话框的大小?
- 如何判断鼠标在一个LIST框内
- 请问如何实现windows自带的画图的颜料盒以及工具栏
- 毫秒级数据采集并实时显示,为何有这样大的问题啊?
- IConnectionPoint
- VC怎么实现POST网络数据
- VS2010 存储图片到SQL数据库
- 有谁用过全拼的手工造词?但每次格式化后,手工造的词就没有了,请问谁知道Windows下手工造词是存在哪个文件上,这样,我就不必每次重新装Windows一遍又一遍的造词了???
- 有nt/win2000下服务程序经验的朋友花几分钟关注一下,等了2天了
- ADO调用存储过程时参数的处理
我实在不太明白什么原因,能用MSN或EMAIL交流一下吗?
MSN:[email protected]
Email:[email protected]
实际的main()代码如下!
void main(int argc, char *argv[] )
{
if (argc > 2)
UnInstall("MyService"); if (argc > 1)
Install(argv[0], "MyService", "Caney"); if (! StartServiceCtrlDispatcher( DispatchTable ) )
SvcDebugOut(" [MSEVER] StartServiceCtrlDispatcher error = %d\n", GetLastError());
}
////////////////////////////////////////////////////////////
VOID Install(char *path, char *internalName, char *descriptiveName) {
SC_HANDLE schSCManager;
SC_HANDLE schService;
LPCTSTR lpszDisplayName;
LPCTSTR lpszBinaryPathName; schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_CREATE_SERVICE);
if (schSCManager == NULL)
printf("ERROR on OpenSCManager\n"); lpszDisplayName = TEXT(descriptiveName);
lpszBinaryPathName = path;
schService = CreateService(
schSCManager, /* SCManager database */
TEXT(internalName), /* name of service */
lpszDisplayName, /* service name to display */
SERVICE_ALL_ACCESS, /* desired access */
SERVICE_WIN32_OWN_PROCESS, /* service type */
SERVICE_DEMAND_START, /* start type */
SERVICE_ERROR_NORMAL, /* error control type */
lpszBinaryPathName, /* service's binary */
NULL, /* no load ordering group */
NULL, /* no tag identifier */
NULL, /* no dependencies */
NULL, /* LocalSystem account */
NULL); /* no password */
if (schService == NULL)
printf("ERROR on CreateService\n");
else
printf("Service Installed\n");
CloseServiceHandle(schService);
exit(1);
} 其中INSTALL()是执行成功的,但StartServiceCtrlDispatcher()始终不成功,返回1063的错误
郁闷,求教!!!!!!!!!!
{
.....
SERVICE_TABLE_ENTRY DispatchTable[]={{"Service1",ServiceMain},{NULL,NULL}};
StartServiceCtrlDispatcher(DispatchTable);
}void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
{ DWORD status;
DWORD specificError; m_ServiceStatus.dwServiceType = SERVICE_WIN32;
m_ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
m_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
m_ServiceStatus.dwWin32ExitCode = 0;
m_ServiceStatus.dwServiceSpecificExitCode = 0;
m_ServiceStatus.dwCheckPoint = 0;
m_ServiceStatus.dwWaitHint = 0;
m_ServiceStatusHandle = RegisterServiceCtrlHandler("Service1",ServiceCtrlHandler);
if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)
{
return;
} m_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
m_ServiceStatus.dwCheckPoint = 0;
m_ServiceStatus.dwWaitHint = 0;
if (!SetServiceStatus (m_ServiceStatusHandle, &m_ServiceStatus))
{ }
bRunning=true;
while(bRunning)
{
Sleep(3000);
//Place Your Code for processing here....
} return;
}
//////////////////////////////////////////////////////////////////////
//
// This routine gets used to start your service
//
VOID WINAPI MyServiceMain( DWORD dwArgc, LPTSTR *lpszArgv )
{
DWORD status;
DWORD specificError;
MyServiceStatus.dwServiceType = SERVICE_WIN32;
MyServiceStatus.dwCurrentState = SERVICE_START_PENDING;
MyServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
MyServiceStatus.dwWin32ExitCode = 0;
MyServiceStatus.dwServiceSpecificExitCode = 0;
MyServiceStatus.dwCheckPoint = 0;
MyServiceStatus.dwWaitHint = 0;
MyServiceStatusHandle = RegisterServiceCtrlHandler( TEXT("MyService"), MyServiceHandler);
if (MyServiceStatusHandle == (SERVICE_STATUS_HANDLE)0) {
SvcDebugOut(" [MSEVER] RegisterServiceCtrlHandler failed %d\n", GetLastError());
return;
}
// Initialization code goes here.
status = 0;
// Handle error condition
if (status != NO_ERROR) {
MyServiceStatus.dwCurrentState = SERVICE_STOPPED;
MyServiceStatus.dwCheckPoint = 0;
MyServiceStatus.dwWaitHint = 0;
MyServiceStatus.dwWin32ExitCode = status;
MyServiceStatus.dwServiceSpecificExitCode = specificError;
SetServiceStatus (MyServiceStatusHandle, &MyServiceStatus);
return;
}
// Initialization complete - report running status
MyServiceStatus.dwCurrentState = SERVICE_RUNNING;
MyServiceStatus.dwCheckPoint = 0;
MyServiceStatus.dwWaitHint = 0;
if (!SetServiceStatus (MyServiceStatusHandle, &MyServiceStatus)) {
status = GetLastError();
SvcDebugOut(" [MSEVER] SetServiceStatus error %ld\n",status);
}
// This is where the service does its work. //
StartServiceB();
SvcDebugOut(" [MSEVER] Returning the Main Thread \n",0);
return;
}
我在MyServiceMain加了断点,但根本不运行进来!