services: Preparation to allow arbitrary data in service RPC messages.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b6a505f9a5
commit
5f2b96b859
|
@ -46,7 +46,7 @@ typedef struct service_start_info_t
|
|||
DWORD total_size; /* total request size */
|
||||
DWORD name_size; /* size of name in data buffer */
|
||||
DWORD control; /* control code */
|
||||
WCHAR data[1];
|
||||
BYTE data[1];
|
||||
} service_start_info;
|
||||
|
||||
[
|
||||
|
|
|
@ -1046,14 +1046,14 @@ static BOOL process_send_control(struct process_entry *process, const WCHAR *nam
|
|||
BOOL r;
|
||||
|
||||
/* calculate how much space we need to send the startup info */
|
||||
len = strlenW(name) + 1;
|
||||
len = (strlenW(name) + 1) * sizeof(WCHAR);
|
||||
|
||||
ssi = HeapAlloc(GetProcessHeap(),0,FIELD_OFFSET(service_start_info, data[len]));
|
||||
ssi->cmd = WINESERV_SENDCONTROL;
|
||||
ssi->control = dwControl;
|
||||
ssi->total_size = FIELD_OFFSET(service_start_info, data[len]);
|
||||
ssi->name_size = strlenW(name) + 1;
|
||||
strcpyW(ssi->data, name);
|
||||
strcpyW((WCHAR *)ssi->data, name);
|
||||
|
||||
r = process_send_command(process, ssi, ssi->total_size, result);
|
||||
HeapFree( GetProcessHeap(), 0, ssi );
|
||||
|
|
|
@ -861,17 +861,17 @@ static BOOL process_send_start_message(struct process_entry *process, const WCHA
|
|||
len = strlenW(name) + 1;
|
||||
for (i=0; i<argc; i++)
|
||||
len += strlenW(argv[i])+1;
|
||||
len++;
|
||||
len = (len + 1) * sizeof(WCHAR);
|
||||
|
||||
ssi = HeapAlloc(GetProcessHeap(),0,FIELD_OFFSET(service_start_info, data[len]));
|
||||
ssi->cmd = WINESERV_STARTINFO;
|
||||
ssi->control = 0;
|
||||
ssi->total_size = FIELD_OFFSET(service_start_info, data[len]);
|
||||
ssi->name_size = strlenW(name) + 1;
|
||||
strcpyW(ssi->data, name);
|
||||
strcpyW((WCHAR *)ssi->data, name);
|
||||
|
||||
/* copy service args into a single buffer*/
|
||||
p = &ssi->data[ssi->name_size];
|
||||
p = (WCHAR *)&ssi->data[ssi->name_size * sizeof(WCHAR)];
|
||||
for (i=0; i<argc; i++)
|
||||
{
|
||||
strcpyW(p, argv[i]);
|
||||
|
|
Loading…
Reference in New Issue