gpt4 book ai didi

c - Windows 服务作为控制台应用程序运行,但作为服务自动关闭

转载 作者:行者123 更新时间:2023-11-30 16:42:00 26 4
gpt4 key购买 nike

因此,我创建了一个 Windows 服务,它在 Windows 10 中作为服务运行,在 Windows 7 中作为控制台应用程序运行,但是当在 Windows 7 中作为服务运行时,它会自动停止。

我已按照此处的教程 DevX windows service steps 进行操作

该服务与我的驱动程序对话,并通过执行 cmd wmic diskdrive get pnpdeviceid 提供特定设备的序列号。

最后是main函数和serviceMain函数

 VOID
WINAPI ServiceMain(
DWORD argc,
LPTSTR *argv
)
/*
Description:
Service Entry Point of the service.
*/
{
statusHandle = RegisterServiceCtrlHandler(SERVICE_NAME, ServiceCtrlHandler);

if (statusHandle == NULL)
return;

// Tell the service controller we are starting
RtlZeroMemory(&serviceStatus, sizeof(serviceStatus));
serviceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
serviceStatus.dwControlsAccepted = 0;
serviceStatus.dwCurrentState = SERVICE_START_PENDING;
serviceStatus.dwWin32ExitCode = 0;
serviceStatus.dwServiceSpecificExitCode = 0;
serviceStatus.dwCheckPoint = 0;

HRESULT result = ConnectToPort(&port);

serviceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus(statusHandle, &serviceStatus);

while (serviceStatus.dwCurrentState == SERVICE_RUNNING) {
result = GetInformationAndSendSerialNumber(&port);
if(SUCCEEDED(result)) Sleep(5000);
}

serviceStatus.dwControlsAccepted = 0;
serviceStatus.dwCurrentState = SERVICE_STOPPED;
serviceStatus.dwWin32ExitCode = 0;
serviceStatus.dwCheckPoint = 3;
SetServiceStatus(statusHandle, &serviceStatus);
}

INT
main(
INT argc,
PCHAR *argv
)
{
SERVICE_TABLE_ENTRY serviceTableEntry[] =
{
{ SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain},
{NULL, NULL}
};
StartServiceCtrlDispatcher(serviceTableEntry);
return 0;
}

`

这就是我安装服务的方式

sc create Test binpath= C:\Test.exe
sc config 测试开始=自动

最佳答案

好吧,我明白了,这是一堆错误。

我为 FltSendMessage 设置的计时器太长(100 秒),而且我没有初始化 FilterGetMessage 中的 OVERLAPPED 结构,这意味着服务处于等待状态,直到来自驱动程序的任何输入。

现在一切都已经解决了。感谢您的所有帮助。

编辑:我还搞砸了字符串匹配,从而断开了服务

关于c - Windows 服务作为控制台应用程序运行,但作为服务自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com