launcher: improvements

This commit is contained in:
Bill Zissimopoulos 2016-05-11 15:32:16 -07:00
parent ab48beb4ba
commit 1a14971911
2 changed files with 9 additions and 7 deletions

View File

@ -312,8 +312,10 @@ NTSTATUS SvcInstanceGetInfo(PWSTR InstanceName, PWSTR Buffer, PULONG PSize)
{ {
SVC_INSTANCE *SvcInstance; SVC_INSTANCE *SvcInstance;
ULONG ClassNameSize, InstanceNameSize, CommandLineSize; ULONG ClassNameSize, InstanceNameSize, CommandLineSize;
NTSTATUS Result;
EnterCriticalSection(&SvcInstanceLock); EnterCriticalSection(&SvcInstanceLock);
SvcInstance = SvcInstanceFromName(InstanceName); SvcInstance = SvcInstanceFromName(InstanceName);
if (0 != SvcInstance) if (0 != SvcInstance)
{ {
@ -336,6 +338,7 @@ NTSTATUS SvcInstanceGetInfo(PWSTR InstanceName, PWSTR Buffer, PULONG PSize)
} }
else else
Result = STATUS_OBJECT_NAME_NOT_FOUND; Result = STATUS_OBJECT_NAME_NOT_FOUND;
LeaveCriticalSection(&SvcInstanceLock); LeaveCriticalSection(&SvcInstanceLock);
return Result; return Result;
@ -364,7 +367,7 @@ static NTSTATUS SvcStart(FSP_SERVICE *Service, ULONG argc, PWSTR *argv)
PIPE_ACCESS_DUPLEX | PIPE_ACCESS_DUPLEX |
FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED, FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS,
1, PIPE_SRVBUF_SIZE, PIPE_CLIBUF_SIZE, 0, 0); 1, PIPE_BUFFER_SIZE, PIPE_BUFFER_SIZE, 0, 0);
if (INVALID_HANDLE_VALUE == SvcPipe) if (INVALID_HANDLE_VALUE == SvcPipe)
goto fail; goto fail;
@ -451,7 +454,7 @@ static DWORD WINAPI SvcPipeServer(PVOID Context)
PWSTR PipeBuf = 0; PWSTR PipeBuf = 0;
DWORD LastError, BytesTransferred; DWORD LastError, BytesTransferred;
PipeBuf = MemAlloc(PIPE_SRVBUF_SIZE); PipeBuf = MemAlloc(PIPE_BUFFER_SIZE);
if (0 == PipeBuf) if (0 == PipeBuf)
{ {
FspServiceSetExitCode(Service, ERROR_NO_SYSTEM_RESOURCES); FspServiceSetExitCode(Service, ERROR_NO_SYSTEM_RESOURCES);
@ -473,7 +476,7 @@ static DWORD WINAPI SvcPipeServer(PVOID Context)
} }
LastError = SvcPipeWaitResult( LastError = SvcPipeWaitResult(
ReadFile(SvcPipe, PipeBuf, PIPE_SRVBUF_SIZE, &BytesTransferred, &SvcOverlapped), ReadFile(SvcPipe, PipeBuf, PIPE_BUFFER_SIZE, &BytesTransferred, &SvcOverlapped),
SvcEvent, SvcPipe, &SvcOverlapped, &BytesTransferred); SvcEvent, SvcPipe, &SvcOverlapped, &BytesTransferred);
if (-1 == LastError) if (-1 == LastError)
break; break;
@ -594,7 +597,7 @@ static VOID SvcPipeTransact(PWSTR PipeBuf, PULONG PSize)
break; break;
case LauncherSvcInstanceList: case LauncherSvcInstanceList:
*PSize = PIPE_SRVBUF_SIZE - 1; *PSize = PIPE_BUFFER_SIZE - 1;
SvcInstanceGetNameList(PipeBuf + 1, PSize); SvcInstanceGetNameList(PipeBuf + 1, PSize);
*PipeBuf = L'$'; *PipeBuf = L'$';
@ -607,7 +610,7 @@ static VOID SvcPipeTransact(PWSTR PipeBuf, PULONG PSize)
Result = STATUS_UNSUCCESSFUL; Result = STATUS_UNSUCCESSFUL;
if (0 != InstanceName) if (0 != InstanceName)
{ {
*PSize = PIPE_SRVBUF_SIZE - 1; *PSize = PIPE_BUFFER_SIZE - 1;
Result = SvcInstanceGetInfo(InstanceName, PipeBuf + 1, PSize); Result = SvcInstanceGetInfo(InstanceName, PipeBuf + 1, PSize);
} }

View File

@ -22,8 +22,7 @@
#include <shared/minimal.h> #include <shared/minimal.h>
#define PIPE_NAME "\\\\.\\pipe\\WinFsp.{14E7137D-22B4-437A-B0C1-D21D1BDF3767}" #define PIPE_NAME "\\\\.\\pipe\\WinFsp.{14E7137D-22B4-437A-B0C1-D21D1BDF3767}"
#define PIPE_SRVBUF_SIZE 1024 #define PIPE_BUFFER_SIZE 2048
#define PIPE_CLIBUF_SIZE 1024
enum enum
{ {