3.1.4.36 RQueryServiceConfig2A (Opnum 38)

The RQueryServiceConfig2A <55> method returns the optional configuration parameters of the specified service based on the specified information level.

 DWORD RQueryServiceConfig2A(
   [in] SC_RPC_HANDLE hService,
   [in] DWORD dwInfoLevel,
   [out, size_is(cbBufSize)] LPBYTE lpBuffer,
   [in, range(0, 1024*8)] DWORD cbBufSize,
   [out] LPBOUNDED_DWORD_8K pcbBytesNeeded
 );

hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the service record that MUST have been created previously, using one of the open methods specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been granted to the caller when the RPC context handle to the service record was created.

dwInfoLevel: A value that specifies the configuration information to query. This SHOULD be one of the following values.

Value

Meaning

SERVICE_CONFIG_DESCRIPTION

0x00000001

The lpBuffer parameter is a pointer to a SERVICE_DESCRIPTIONA structure.

SERVICE_CONFIG_FAILURE_ACTIONS

0x00000002

The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONSA structure.

SERVICE_CONFIG_DELAYED_AUTO_START_INFO

0x00000003<56>

The lpBuffer parameter is a pointer to a SERVICE_DELAYED_AUTO_START_INFO structure.

SERVICE_CONFIG_FAILURE_ACTIONS_FLAG

0x00000004<57>

The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONS_FLAG structure.

SERVICE_CONFIG_SERVICE_SID_INFO

0x00000005<58>

The lpBuffer parameter is a pointer to a SERVICE_SID_INFO structure.

SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO

0x00000006<59>

The lpBuffer parameter is a pointer to a SERVICE_RPC_REQUIRED_PRIVILEGES_INFO structure.

SERVICE_CONFIG_PRESHUTDOWN_INFO

0x00000007<60>

The lpBuffer parameter is a pointer to a SERVICE_PRESHUTDOWN_INFO structure.

SERVICE_CONFIG_PREFERRED_NODE

0x00000009<61>

The lpBuffer parameter is a pointer to a SERVICE_PREFERRED_NODE_INFO structure.<62>

lpBuffer: A pointer to the buffer that contains the service configuration information. The format of this data depends on the value of the dwInfoLevel parameter.

cbBufSize: The size, in bytes, of the lpBuffer parameter.

pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the pointer to a variable that contains the number of bytes needed to return the configuration information.

Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, it returns one of the following error codes.

Return value/code

Description

5

ERROR_ACCESS_DENIED

The SERVICE_QUERY_CONFIG access right had not been granted to the caller when the RPC context handle to the service record was created.

6

ERROR_INVALID_HANDLE

The handle is no longer valid.

87

ERROR_INVALID_PARAMETER

A parameter that was specified is invalid.

122

ERROR_INSUFFICIENT_BUFFER

The data area passed to a system call is too small.

124

ERROR_INVALID_LEVEL

The dwInfoLevel parameter contains an unsupported value.

1115

ERROR_SHUTDOWN_IN_PROGRESS

The system is shutting down.

In response to this request from the client, for a successful operation the server MUST query the specific configuration information stored in the SCM database associated with the service record identified by the hService parameter, using the information level and the corresponding values associated with that information level as specified in the dwInfoLevel parameter of the client request. The server MUST return this configuration data by setting the lpBuffer parameter with the appropriate structure filled with the configuration data based on dwInfoLevel.

The server MUST set the required buffer size in the pcbBytesNeeded parameter.

If the buffer pointed to by lpBuffer is insufficient to hold all the configuration data, the server MUST fail the call with ERROR_INSUFFICIENT_BUFFER (122).

The server MUST use the process described in Conversion Between ANSI and Unicode String Formats (section 3.1.7) to convert a string to the appropriate format.

The server MUST return ERROR_INVALID_PARAMETER (87) if either or both lpBuffer and pcbBytesNeeded are NULL.<63>