C# Взаимодействие GetNamedPipeClientProcessId ERROR_NOT_FOUND 1168 (0x490) - PullRequest
0 голосов
/ 05 февраля 2020

Я не могу понять, почему я получаю код ошибки ERROR_NOT_FOUND / 1168 (0x490). Если я заменю GetNamedPipeClientProcessId на GetNamedPipeServerProcessId, я успешно получу идентификатор процесса сервера.

Код:

[DllImport("kernel32.dll", SetLastError = true)]
internal static extern bool GetNamedPipeClientProcessId(IntPtr Pipe, out int ClientProcessId);

int GetNamedPipeClientProcessId(NamedPipeServerStream pipeServer)
{
   var hPipe = pipeServer.SafePipeHandle.DangerousGetHandle();

    if (GetNamedPipeClientProcessId(hPipe, out var clientProcessId))
    {
        return clientProcessId;
    }
    else
    {
        var error = Marshal.GetLastWin32Error();
        return 0;
    }
}

1 Ответ

1 голос
/ 05 февраля 2020

Вам необходимо позвонить GetNamedPipeClientProcessId после того, как Клиент позвонил CallNamedPipe или CreateFile, чтобы подключиться к именной трубе. Если клиент не подключился к конвейеру имен, GetNamedPipeClientProcessId завершится с ошибкой ERROR_NOT_FOUND (0x490).

...