Winapi Windows服务编程
我正在编写一个windows服务,我需要将一些参数传递到该服务中,有人知道我会怎么做吗Winapi Windows服务编程,winapi,service,Winapi,Service,我正在编写一个windows服务,我需要将一些参数传递到该服务中,有人知道我会怎么做吗 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SERVICE_TABLE_ENTRY svcTable[2] = {0}; svcTable[0].lpServiceName = (LPWSTR)svcName.c_str(); sv
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SERVICE_TABLE_ENTRY svcTable[2] = {0};
svcTable[0].lpServiceName = (LPWSTR)svcName.c_str();
svcTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)TRPC::ServiceMain;
std::wstring* str = new std::wstring(TEXT("Hello World"));
// I want to pass say, str in argv[0];
StartServiceCtrlDispatcher(svcTable);
}
void TRPC::ServiceMain(DWORD argc, LPWSTR* argv)
{
Access argv here...
}
ServiceMain是类中的一个静态定义,以符合u stdcall,但我要做的是在调用StartServiceCtrlDispatcher()之前用我自己的一组分配字符串填充agrv,这样我就可以在方法中使用参数。有什么想法吗?服务控制管理器在启动服务时从
启动服务CtrlDispatcher()
中调用ServiceMain()
。将参数传递给ServiceMain()
本身的唯一方法是:
StartService()
函数GetCommandLine()
服务的参数是从服务外部提供的。在我看来,你对这件事感到困惑。您似乎认为源于代码的参数可能是在
StartServiceCtrlDispatcher
之前使用ChangeServiceConfig
并在那里更改二进制路径。。。