我不確定如果我只是沒有看到它或什麼?我需要知道從NamedPipeServerStream
實例通過命名管道連接到我的服務器的客戶端的進程ID。這樣可能嗎?獲取使用C#連接到命名管道服務器的客戶端的進程ID
在此期間,我想出了這個功能:
[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,我在這裏使用的方式更好。
實際上你的問題是什麼? – ken2k 2013-04-09 08:04:52
你想知道「這是正確的」嗎?或者是什麼? – Ben 2013-04-09 08:56:46
我最關心的是他們所謂的「DangerousGetHandle」。 – c00000fd 2013-04-09 09:45:47