Шаг 161 - Понимание именованных каналов (PIPE), или выяснение конфигурации сервера

С именованными каналами PIPE мы уже сталкивались ранее в шаге <&&Link winapi 13&&>. Там мы создавали клиента и сервера. Windows NT очень интенсивно применяет именованные каналы для реализации сетевого взаимодействия. Самое главное здесь четко уяснить, что сам сервер создает именованные каналы. Точнее сервисы их создают. Давайте посмотрим сервис Spooler. Когда он запущен.

161_1.gif (2652 b)

То на сервере создан одноименный канал и мы можем его открыть.

HANDLE hf=NULL;
hf=CreateFile("\\\\Servers\\pipe\\spoolss",GENERIC_READ | GENERIC_WRITE,
	0,NULL,OPEN_EXISTING,0,NULL);
if (hf!=INVALID_HANDLE_VALUE)
{
	cout << "Ok Open" << endl;
}

161_2.gif (1598 b)

В отличии от почтовых слотов подробнее "Шаг 156 - Создаем клиента почтового слота", мы сможем открыть канал только в том случае, если этот канал реально существует. А вот теперь остановим сервис.

161_3.gif (3696 b)

И с этого момента связаться с данным каналом нам не удастся. Вывод отсюда простой, что наличие именованных каналов может служить для получения информации о запущенных сервисах на сервере. Вот еще один интересный канал.

\pipe\sql\query

Данный канал открыт, когда на сервере работает MS SQL Server. Кстати всяких каналов много, вот например.

\PIPE\SERVRCON
\PIPE\ALERTS
\PIPE\DNSSERVER

И так далее, конечно получить доступ Вы можете далеко не ко всем каналам, еще раз все зависит от запущенных сервисов.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.11.2001