sc 创建svchost服务_xp 创建服务_svchost应用程序错误(10)

电脑杂谈  发布时间:2017-05-07 13:43:47  来源:网络整理

break;case DLL_THREAD_ATTACH:

OutputString("SvcHostDLL: DllMain called DLL_THREAD_ATTACH");

case DLL_THREAD_DETACH:

OutputString("SvcHostDLL: DllMain called DLL_THREAD_DETACH");

case DLL_PROCESS_DETACH:

TellSCM( SERVICE_STOP_PENDING, 0, 0 );

Sleep(1500);

TellSCM( SERVICE_STOPPED, 0, 0 );

OutputString("SvcHostDLL: DllMain called DLL_PROCESS_DETACH");

#endif

break;

}return TRUE;

}

void __stdcall ServiceMain( int argc, wchar_t* argv[] )

{

// DebugBreak();

char svcname[256];

strncpy(svcname, (char*)argv[0], sizeof svcname); //it's should be unicode, but if it's ansi we do it well

wcstombs(svcname, argv[0], sizeof svcname);

OutputString("SvcHostDLL: ServiceMain(%d, %s) called", argc, svcname);hSrv = RegisterServiceCtrlHandler( svcname, (LPHANDLER_FUNCTION)ServiceHandler );

if( hSrv == NULL )

{

OutputString("SvcHostDLL: RegisterServiceCtrlHandler %S failed", argv[0]);

return;

}else FreeConsole();TellSCM( SERVICE_START_PENDING, 0, 1 );

TellSCM( SERVICE_RUNNING, 0, 0 );// call Real Service function noew

if(argc > 1)

strncpy(svcname, (char*)argv[1], sizeof svcname),

wcstombs(svcname, argv[1], sizeof svcname);

RealService(argc > 1 ? svcname : MY_EXECUTE_NAME, argc > 2 ? 1 : 0);do{

Sleep(10);//not quit until receive stop command, otherwise the service will stop

}while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);OutputString("SvcHostDLL: ServiceMain done");

return;

}int TellSCM( DWORD dwState, DWORD dwExitCode, DWORD dwProgress )

{

SERVICE_STATUS srvStatus;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-45730-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...