From a607806c60e61a7e30032e7ffbb8f15f62fba085 Mon Sep 17 00:00:00 2001 From: Tal Aloni Date: Wed, 30 Aug 2017 13:10:01 +0300 Subject: [PATCH] NamedPipeStore: Added support for FSCTL_PIPE_WAIT --- SMBLibrary/NTFileStore/NamedPipeStore.cs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/SMBLibrary/NTFileStore/NamedPipeStore.cs b/SMBLibrary/NTFileStore/NamedPipeStore.cs index 1b7fb5d..eef720c 100644 --- a/SMBLibrary/NTFileStore/NamedPipeStore.cs +++ b/SMBLibrary/NTFileStore/NamedPipeStore.cs @@ -102,7 +102,28 @@ namespace SMBLibrary public NTStatus DeviceIOControl(object handle, uint ctlCode, byte[] input, out byte[] output, int maxOutputLength) { output = null; - if (ctlCode == (uint)IoControlCode.FSCTL_PIPE_TRANSCEIVE) + if (ctlCode == (uint)IoControlCode.FSCTL_PIPE_WAIT) + { + PipeWaitRequest request; + try + { + request = new PipeWaitRequest(input, 0); + } + catch + { + return NTStatus.STATUS_INVALID_PARAMETER; + } + + RemoteService service = GetService(request.Name); + if (service == null) + { + return NTStatus.STATUS_OBJECT_NAME_NOT_FOUND; + } + + output = new byte[0]; + return NTStatus.STATUS_SUCCESS; + } + else if (ctlCode == (uint)IoControlCode.FSCTL_PIPE_TRANSCEIVE) { int numberOfBytesWritten; NTStatus writeStatus = WriteFile(out numberOfBytesWritten, handle, 0, input);