Пусть у меня есть пайп-сервер на блокирующих пайпах. Подскажите, пожалуйста, как в момент возврата из ConnectNamedPipe определить клиентский процесс, который подключился к моему пайпу, если протокол обмена сообщениями с клиентским процессом в общем случае не известен (т.е. я не могу послать процессу по пайпу "Ты кто?", и он мне сразу всю свою подноготную выложит). И можно способ по проще и по документированнее? А то глобальный перехват CreateFile меня не привлекает.
asd Видимо не через toolhelp api, а через ZwQuerySystemInformation. Не очень тянет на документированность, но хоть несложно. А как определить, что хэндл открытого пайпа - это именно хэндл моего именованого пайпа? (забыл сказать, что пайп именованый) Т.е. вопрос сводится к тому, как получить имя пайпа по его хэндлу?
l_inc Да с ToolHelp я конечно маху дал на ночь глядя. Посмотри тут http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=21&m=133073
asd Большое спасибо. ZwQueryObject возвращает то, что надо. Не в тему вопрос, но так как я новичек в C++... При статическом импорте из dll мне не нравится пользоваться либами и заголовочными файлами (пережиток VB... да и фасма). Методом мат тыка и изучения заголовочных файлов научился делать вот так: Код (Text): extern "C" __declspec(dllimport) unsigned long __stdcall ZwQueryObject(unsigned long ObjectHandle, unsigned long ObjectInformationClass, unsigned char *ObjectInformation, unsigned long ObjectInformationLength, unsigned long *ReturnLength); Но такое объявление совсем не освобождает от подключения к проекту ntdll.lib. Как бы в этом объявлении указать экспортирующую dll и совсем избавиться от либ? И возможно ли это в принципе?