Platform SDK: DLLs, Processes, and Threads

QueryServiceStatusEx

The QueryServiceStatusEx function retrieves the current status of the specified service based on the specified information level.

This function supersedes the QueryServiceStatus function. QueryServiceStatusEx returns the same information QueryServiceStatus returns, with the addition of the process identifier and additional flags for the service.

BOOL QueryServiceStatusEx(
  SC_HANDLE hService,       // handle to service
  SC_STATUS_TYPE InfoLevel, // information level
  LPBYTE lpBuffer,          // buffer
  DWORD cbBufSize,          // size of buffer
  LPDWORD pcbBytesNeeded    // bytes needed
);

Parameters

hService
[in] Handle to the service. This handle is returned by the CreateService or OpenService function, and it must have SERIVCE_QUERY_STATUS access.
InfoLevel
[in] Specifies which service attributes are to be returned. Use SC_STATUS_PROCESS_INFO to retrieve the service status information. The lpBuffer parameter is a pointer to a SERVICE_STATUS_PROCESS structure.

Currently, no other information levels are defined.

lpBuffer
[out] Pointer to the buffer that receives the status information. The format of this data depends on the value of the InfoLevel parameter.
cbBufSize
[in] Specifies the size, in bytes, of the buffer pointed to by the lpBuffer parameter.
pcbBytesNeeded
[out] Pointer to a variable that receives the number of bytes needed to store all status information, if the function fails with the error ERROR_INSUFFICIENT_BUFFER.

Return Values

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError. The following errors can be returned.

Error code Meaning
ERROR_INVALID_HANDLE The handle is invalid.
ERROR_ACCESS_DENIED The handle was not opened with SERVICE_QUERY_STATUS access.
ERROR_INSUFFICIENT_BUFFER The buffer is too small for the SERVICE_STATUS_PROCESS structure. Nothing was written to the structure.
ERROR_INVALID_PARAMETER The cbSize member of SERVICE_STATUS_PROCESS is not valid.
ERROR_INVALID_LEVEL The InfoLevel parameter contains an unsupported value.
ERROR_SHUTDOWN_IN_PROGRESS The system is shutting down; this function cannot be called.

Remarks

The QueryServiceStatusEx function returns the most recent service status information reported to the service control manager. If the service just changed its status, it may not have updated the service control manager yet. Applications can find the current service status by querying the service directly by using the ControlService function with the SERVICE_CONTROL_INTERROGATE control code.

Requirements

  Windows NT/2000: Requires Windows 2000.
  Header: Declared in Winsvc.h; include Windows.h.
  Library: Use Advapi32.lib.

See Also

Services Overview, Service Functions, SERVICE_STATUS_PROCESS