<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615899</guid>
        <pubDate>Wed, 09 Jun 2010 07:13:29 +0000</pubDate>
        <title>Пайпы: ConnectNamedPipe не реагирует на подключение</title>
        <link>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615899</link>
        <description><![CDATA[Northsoft: Сервер:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unsigned long int __stdcall ConnectNamedPipeThreadProc(void *parameter){</div><div class="code_line">&nbsp;&nbsp;ovlGlobal.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); /* возвращено значение 0xDC */</div><div class="code_line">&nbsp;&nbsp;ConnectNamedPipe(hPipeGlobal,&amp;ovlGlobal); /* возвращено значение 0, GetLastError()==ERROR_PIPE_LISTENING */</div><div class="code_line">&nbsp;&nbsp;WaitForSingleObject(ovlGlobal.hEvent,INFINITE); /* здесь функция блокирует поток */</div><div class="code_line">&nbsp;&nbsp;/* зедсь находится вызов ReadFileEx */</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void CreateButtonClick(){</div><div class="code_line">&nbsp;&nbsp;wchar_t pipepath[600]=L&quot;\\.\pipe\123123&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;hPipeGlobal = CreateNamedPipe(pipepath,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_ACCESS_DUPLEX|FILE_FLAG_FIRST_PIPE_INSTANCE|FILE_FLAG_OVERLAPPED,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_TYPE_MESSAGE|PIPE_NOWAIT,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_UNLIMITED_INSTANCES,</div><div class="code_line">&nbsp;&nbsp; &nbsp;64*1024,</div><div class="code_line">&nbsp;&nbsp; &nbsp;64*1024,</div><div class="code_line">&nbsp;&nbsp; &nbsp;60*1000,</div><div class="code_line">&nbsp;&nbsp; &nbsp;NULL); /* возвращено значение 0xD8 */</div><div class="code_line">&nbsp;&nbsp;CreateThread(NULL,0,ConnectNamedPipeThreadProc,NULL,0,NULL);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Клиент:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void ConnectButtonClick(){</div><div class="code_line">&nbsp;&nbsp;wchar_t pipename[600]=L&quot;\\.\pipe\123123&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;hPipeGlobal = CreateFile(pipepath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL); /* возвращено значение 0xD4 */</div><div class="code_line">&nbsp;&nbsp;/* здесь находится вызов ReadFileEx */</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Насчёт ERROR_PIPE_LISTENING было сказано в <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/aa365146%28VS.85%29.aspx' target='_blank'>MSDN</a>.<br>
З.Ы. Обнуление не помогло.]]></description>
        <author>Northsoft</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615849</guid>
        <pubDate>Wed, 09 Jun 2010 06:44:26 +0000</pubDate>
        <title>Пайпы: ConnectNamedPipe не реагирует на подключение</title>
        <link>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615849</link>
        <description><![CDATA[Ace: CreateNamedPipe удачно проходит?<br>
А что касаемо самого ожидания присоединения клиента, то лучше всёж проверять результаты выполняемых системных вызовов..<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">BOOL fConnect = ConnectNamedPipe(hPipeGlobal,&amp;ovlGlobal);</div><div class="code_line">if( !fConnect &amp;&amp; GetLastError() == &nbsp;ERROR_IO_PENDING)</div><div class="code_line">&nbsp;&nbsp; fConnect = WaitForSingleObject(ovlGlobal.hEvent,INFINITE) == WAIT_OBJECT_0;</div><div class="code_line">if( fConnect)</div><div class="code_line">{</div><div class="code_line">/* зедсь находится вызов ReadFileEx */</div><div class="code_line">}</div><div class="code_line">else { // Почему всё так плохо... }</div></ol></div></div></div></div><br>
<br>
И проверяй удачу/неудачу создания файлов/потоков/событий/etc, и прочищай структуры перед их использованием в системных вызовах. Это избавит тебя от непредсказуемого поведения твоего кода и позволит намного быстрей находить место ошибки :)]]></description>
        <author>Ace</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615823</guid>
        <pubDate>Wed, 09 Jun 2010 06:26:37 +0000</pubDate>
        <title>Пайпы: ConnectNamedPipe не реагирует на подключение</title>
        <link>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615823</link>
        <description><![CDATA[arj99: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=305722&view=findpost&p=2615743'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Northsoft &#064; <time class="tag-quote__quoted-time" datetime="2010-06-09T03:28:03+00:00">09.06.10, 03:28</time></span><div class='quote '>У всех системных вызовов смотрится возвращаемое значение, там ничего необычного.</div></div><br>
Хорошо было бы &quot;<em class='tag-i'>все обычное</em>&quot; привести здесь.<br>
А еще лучше смотреть эти значения не только в отладчике, а непосредственно в коде. Странно как-то просто, если смотрится - то почему в этом примере не отражено?.. :unsure:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=305722&view=findpost&p=2615743'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Northsoft &#064; <time class="tag-quote__quoted-time" datetime="2010-06-09T03:28:03+00:00">09.06.10, 03:28</time></span><div class='quote '>Как вы считаете, что здесь может быть не так? </div></div><br>
Я считаю, что нужно добавить инициализацию<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;OVERLAPPED ovlGlobal = { 0 };</div></ol></div></div></div></div><br>
И, кстати, зачем она глобальная?<br>
Тот же вопрос относительно дескриптора канала. Лучше его в поток передавать параметром.]]></description>
        <author>arj99</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615743</guid>
        <pubDate>Wed, 09 Jun 2010 03:28:03 +0000</pubDate>
        <title>Пайпы: ConnectNamedPipe не реагирует на подключение</title>
        <link>https://forum.sources.ru/index.php?showtopic=305722&amp;view=findpost&amp;p=2615743</link>
        <description><![CDATA[Northsoft: Доброго всем дня. После вызова CreateNamedPipe с указанием асинхронного режима создаю событие, записываю его в Overlapped-структуру, ответвляюсь в новый поток и там вызываю WaitForSingleObject для ожидания подключения клиента. Но WaitForSingleObject не реагирует на подключение клиента.<br>
Сервер:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">OVERLAPPED ovlGlobal;</div><div class="code_line">HANDLE hPipeGlobal;</div><div class="code_line">&nbsp;</div><div class="code_line">unsigned long int __stdcall ConnectNamedPipeThreadProc(void *parameter){</div><div class="code_line">&nbsp;&nbsp;ovlGlobal.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);</div><div class="code_line">&nbsp;&nbsp;ConnectNamedPipe(hPipeGlobal,&amp;ovlGlobal);</div><div class="code_line">&nbsp;&nbsp;WaitForSingleObject(ovlGlobal.hEvent,INFINITE);</div><div class="code_line">&nbsp;&nbsp;/* зедсь находится вызов ReadFileEx */</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void CreateButtonClick(){</div><div class="code_line">&nbsp;&nbsp;wchar_t pipepath[600]=L&quot;\\.\pipe\123123&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;hPipeGlobal = CreateNamedPipe(pipepath,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_ACCESS_DUPLEX|FILE_FLAG_FIRST_PIPE_INSTANCE|FILE_FLAG_OVERLAPPED,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_TYPE_MESSAGE|PIPE_NOWAIT,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PIPE_UNLIMITED_INSTANCES,</div><div class="code_line">&nbsp;&nbsp; &nbsp;64*1024,</div><div class="code_line">&nbsp;&nbsp; &nbsp;64*1024,</div><div class="code_line">&nbsp;&nbsp; &nbsp;60*1000,</div><div class="code_line">&nbsp;&nbsp; &nbsp;NULL);</div><div class="code_line">&nbsp;&nbsp;CreateThread(NULL,0,ConnectNamedPipeThreadProc,NULL,0,NULL);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Клиент:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void ConnectButtonClick(){</div><div class="code_line">&nbsp;&nbsp;wchar_t pipename[600]=L&quot;\\.\pipe\123123&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;hPipeGlobal = CreateFile(pipepath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);</div><div class="code_line">&nbsp;&nbsp;/* здесь находится вызов ReadFileEx */</div><div class="code_line">}</div></ol></div></div></div></div><br>
У всех системных вызовов смотрится возвращаемое значение, там ничего необычного.<br>
Как вы считаете, что здесь может быть не так?]]></description>
        <author>Northsoft</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	