Я не уверен, я просто не вижу этого или что? Мне нужно знать идентификатор процесса клиента, который подключился через именованный канал к моему серверу из экземпляра NamedPipeServerStream
. Такое возможно?
Тем временем я придумал эту функцию:
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern bool GetNamedPipeClientProcessId(IntPtr Pipe, out UInt32 ClientProcessId);
public static UInt32 getNamedPipeClientProcID(NamedPipeServerStream pipeServer)
{
//RETURN:
// = Client process ID that connected via the named pipe to this server, or
// = 0 if error
UInt32 nProcID = 0;
try
{
IntPtr hPipe = pipeServer.SafePipeHandle.DangerousGetHandle();
GetNamedPipeClientProcessId(hPipe, out nProcID);
}
catch
{
//Error
nProcID = 0;
}
return nProcID;
}
Я не очень силен в "DangerousGetHandles" и "DllImports". Мне намного лучше с Win32, которую я использую здесь.
DangerousGetHandle
. - person David Heffernan   schedule 09.04.2013