First part of this post is available at SQL Server Agent failing to start because "The EventLog service has not been started".
I’ve just confirmed an improvement has been already checked-in into SQL Server 2008’s code which keeps up calling EnumServiceStatus when it returns FALSE and GLE returns ERROR_MORE_DATA. It retries up to 10 times and sleeps 100 milliseconds between every attempt. If after all that retry logic, EnumServiceStatus continues failing due to the same error, we will continue seeing the same behavior which was explained in my first part of this story.
By the way, neither the amount of time elapsed between calls, nor the number of retries can be parameterized. They are both hardcoded.
See you in a next post.