Implemented VirtualPrinterDriver project

This commit is contained in:
Marco Batzinger 2020-10-19 17:44:50 +02:00
parent f29c84821b
commit 5c87967c3f
125 changed files with 8191 additions and 0 deletions

View file

@ -0,0 +1,46 @@
using System;
using System.IO.Pipes;
using System.Security.AccessControl;
using System.Security.Principal;
using JetBrains.Annotations;
using NamedPipeWrapper;
using VirtualPrinter.ProgressInfo.Lib.Interfaces;
namespace VirtualPrinter.ProgressInfo.Lib
{
public class ProgressInfoServerFactory : IProgressInfoServerFactory
{
private const string PipeName = "vdpagent";
[NotNull]
private readonly Func<NamedPipeServer<Core.Message.Message>, IProgressInfoServer> _factorInfoServer;
public ProgressInfoServerFactory
(
[NotNull]Func<NamedPipeServer<Core.Message.Message>, IProgressInfoServer> factorInfoServer
)
{
_factorInfoServer = factorInfoServer;
}
public IProgressInfoServer Create()
{
var namedPipeServer = new NamedPipeServer<Core.Message.Message>(PipeName, GetPipeSecurity());
return _factorInfoServer(namedPipeServer);
}
[NotNull]
private static PipeSecurity GetPipeSecurity()
{
var security = new PipeSecurity();
security.AddAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null), PipeAccessRights.ReadWrite, AccessControlType.Allow));
security.AddAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null), PipeAccessRights.FullControl, AccessControlType.Allow));
return security;
}
}
}