По сути, это так просто, как кажется. Перед вызовом CreateProcess
создайте объект SERVICE_STATUS
, установите для SERVICE_STATUS.dwCurrentState
значение SERVICE_START_PENDING
и вызовите SetServiceStatus(handle_to_your_service, &the_service_status);
.
Вероятно, проще всего сделать объект SERVICE_STATUS
глобальным. Вы будете звонить SetServiceStatus
более одного раза, и большинство участников останутся постоянными с течением времени. Например. .dwServiceType
не должен меняться вообще, а .dwControlsAccepted
обычно не меняется.