services: Pass resume index to server.

oldstable
Nikolay Sivov 2015-02-25 09:07:59 +03:00 committed by Alexandre Julliard
parent 3c186a65d3
commit c0b0d3b4e2
3 changed files with 10 additions and 8 deletions

View File

@ -1619,9 +1619,6 @@ EnumServicesStatusW( SC_HANDLE hmngr, DWORD type, DWORD state, LPENUM_SERVICE_ST
TRACE("%p 0x%x 0x%x %p %u %p %p %p\n", hmngr, type, state, services, size, needed,
returned, resume_handle);
if (resume_handle)
FIXME("resume handle not supported\n");
if (!hmngr)
{
SetLastError( ERROR_INVALID_HANDLE );
@ -1637,7 +1634,7 @@ EnumServicesStatusW( SC_HANDLE hmngr, DWORD type, DWORD state, LPENUM_SERVICE_ST
__TRY
{
err = svcctl_EnumServicesStatusW( hmngr, type, state, (BYTE *)services, size, needed, returned );
err = svcctl_EnumServicesStatusW( hmngr, type, state, (BYTE *)services, size, needed, returned, resume_handle );
}
__EXCEPT(rpc_filter)
{

View File

@ -253,7 +253,7 @@ typedef struct _SC_RPC_CONFIG_INFOW {
/* Not compatible with Windows function 0x0d */
DWORD svcctl_EnumDependentServicesW(/* FIXME */);
/* Not compatible with Windows function 0x0e */
/* Compatible with Windows function 0x0e */
DWORD svcctl_EnumServicesStatusW(
[in] SC_RPC_HANDLE hmngr,
[in] DWORD type,
@ -261,7 +261,8 @@ typedef struct _SC_RPC_CONFIG_INFOW {
[out,size_is(size)] BYTE *buffer,
[in] DWORD size,
[out] LPDWORD needed,
[out] LPDWORD returned
[out] LPDWORD returned,
[in,out,unique] LPDWORD resume
);
/* Compatible with Windows function 0x0f */

View File

@ -1276,7 +1276,8 @@ DWORD __cdecl svcctl_EnumServicesStatusW(
BYTE *buffer,
DWORD size,
LPDWORD needed,
LPDWORD returned)
LPDWORD returned,
LPDWORD resume)
{
DWORD err, sz, total_size, num_services;
DWORD_PTR offset;
@ -1284,7 +1285,7 @@ DWORD __cdecl svcctl_EnumServicesStatusW(
struct service_entry *service;
ENUM_SERVICE_STATUSW *s;
WINE_TRACE("(%p, 0x%x, 0x%x, %p, %u, %p, %p)\n", hmngr, type, state, buffer, size, needed, returned);
WINE_TRACE("(%p, 0x%x, 0x%x, %p, %u, %p, %p, %p)\n", hmngr, type, state, buffer, size, needed, returned, resume);
if (!type || !state)
return ERROR_INVALID_PARAMETER;
@ -1292,6 +1293,9 @@ DWORD __cdecl svcctl_EnumServicesStatusW(
if ((err = validate_scm_handle(hmngr, SC_MANAGER_ENUMERATE_SERVICE, &manager)) != ERROR_SUCCESS)
return err;
if (resume)
WINE_FIXME("resume index not supported\n");
scmdatabase_lock_exclusive(manager->db);
total_size = num_services = 0;