private void Create(IntPtr pipeSecurityDescriptor)
        {
            _handle = PipeNative.CreateNamedPipe(_pipeName,
                                                 PipeNative.PIPE_ACCESS_DUPLEX,
                                                 PipeNative.PIPE_TYPE_BYTE | PipeNative.PIPE_READMODE_BYTE | PipeNative.PIPE_WAIT,
                                                 PipeNative.PIPE_UNLIMITED_INSTANCES,
                                                 8192,
                                                 8192,
                                                 PipeNative.NMPWAIT_WAIT_FOREVER,
                                                 pipeSecurityDescriptor);

            if (_handle == PipeNative.INVALID_HANDLE_VALUE)
            {
                throw new PipeIOException("Could not create the pipe (" + _pipeName + ") - os returned " + PipeNative.GetLastError());
            }
        }