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, TRACE("%p 0x%x 0x%x %p %u %p %p %p\n", hmngr, type, state, services, size, needed,
returned, resume_handle); returned, resume_handle);
if (resume_handle)
FIXME("resume handle not supported\n");
if (!hmngr) if (!hmngr)
{ {
SetLastError( ERROR_INVALID_HANDLE ); SetLastError( ERROR_INVALID_HANDLE );
@ -1637,7 +1634,7 @@ EnumServicesStatusW( SC_HANDLE hmngr, DWORD type, DWORD state, LPENUM_SERVICE_ST
__TRY __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) __EXCEPT(rpc_filter)
{ {

View File

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

View File

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