У меня есть служба C#, это сервер веб-сокетов. Когда соединение с веб-сокетом получено, я получаю идентификатор процесса подключающего приложения (Chrome) из сокета, а затем получаю идентификатор сеанса этого процесса. Получение идентификатора процесса и идентификатора сеанса выполняется в dll C++, который загружается службой C#.ProcessIdToSessionId возвращает неверный идентификатор сеанса
Глядя на вкладке Процессы в диспетчере задач я вижу запись для chrome.exe с PID в 5640 и идентификатор сеанса 45.
в DLL C++ я использую GetExtendedTcpTable(), чтобы найти процесс ID из порта. Это, похоже, отлично работает, когда я получаю правильный идентификатор процесса (в моем примере PID - 5640). Однако, когда я использую этот идентификатор процесса в ProcessIdToSessionId(), идентификатор сеанса возвращается в 44 раза!
Почему ProcessIdToSessionId() возвращает неверный идентификатор сеанса?
ОС Windows 7 32bit.