<?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=414833&amp;view=findpost&amp;p=3799005</guid>
        <pubDate>Wed, 15 May 2019 17:56:42 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3799005</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798998'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-15T18:22:42+03:00">15.05.19, 15:22</time></span><div class='quote '>OVERLAPPED это то что мне нужно?</div></div><br>
Нет. Сначала тебе нужно сделать то что я тебе рекомендовал, это самое простое, с чего надо начинать. Проецирование и т.п. - это следующий шаг, не стоит перескакивать.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798998</guid>
        <pubDate>Wed, 15 May 2019 15:22:42 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798998</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798961'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-15T06:20:05+00:00">15.05.19, 06:20</time></span><div class='quote '>Скорее всего, она использует асинхронный ввод-вывод, виндовский, а тот, в свою очередь - пул потоков.</div></div><br>
OVERLAPPED это то что мне нужно?<br>
Вчера только наткнулся на эту &quot;фишку&quot;.<br>
Переодически веду всякие заметки по программированию в блокноте.Нашёл и о этой программке заметку.<br>
Она использовала CreateFileW,CreateFileA,CreateFileMappingA,MapViewOfFile,UnmapViewOfFile,SetFilePointerEx,WriteFile,GlobalAlloc,GlobalFree,RtlZeroMemory,CreateThread,<br>
По крайней мере,это было в листинге дис-ассамблера.<br>
Здесь не случайно нет ReadFile.<br>
По всей видимости,она проецировала файл(карту) в виртуальной памяти,читала карту блоками и писала в другой.<br>
Если это делать,как вы писали,разделить эти процедуры по разным потокам,получается,нужно в одном потоке искать файлы,во-втором проецировать<br>
файл и передавать в третий хедл CreateFileMappingA,в котором,в свою очередь,читать карту(MapViewOfFile) и писать в файл?]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798961</guid>
        <pubDate>Wed, 15 May 2019 06:20:05 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798961</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T14:41:57+00:00">14.05.19, 14:41</time></span><div class='quote '>Всё,что я пока делал,работает очень медленно.<br>
Всё,что я знаю о той проге, это то,что она работает с большим количеством потоков и с WINAPI.</div></div><br>
Думаю, первое вытекает из второго. <br>
Скорее всего, она использует асинхронный ввод-вывод, виндовский, а тот, в свою очередь - пул потоков.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798950</guid>
        <pubDate>Tue, 14 May 2019 21:28:11 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798950</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798947'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T19:55:11+00:00">14.05.19, 19:55</time></span><div class='quote '>Если захочется специально проигнорировать объект с такими атрибутами ...</div></div>В отношении FILE_ATTRIBUTE_REPARSE_POINT мнение может быть двояким. С одной стороны, они являются ссылками на другие объекты, которые либо находятся вне рассматриваемой области тома, а то и вообще другого тома, либо и без учёта этой ссылки тоже будут обработаны. С другой же стороны, не зря же эта ссылка тут расположена, значит кому-то было нужно, чтобы та, другая, область (другого) тома вроде бы считалась как будто бы находящаяся тут. Так что этот аспект не абсолютен и вполне себе обсуждаем, и наличие этого атрибута у объекта целиком и полностью зависит от пользователя. Даже не автора программы. <strong class='tag-b'>JoeUser</strong> же говорил о другом его аспекте: этот атрибут может иметь объект, ссылающийся на одного из своих родителей. И это уже куда серьёзней, так как его игнор ведёт к бесконечной петле. Попробуй его не игнорировать и при этом не допустить циклов. Это не так-то просто запрограммировать.<br>
С другими атрибутами другая петрушка. FILE_ATTRIBUTE_TEMPORARY выставляется приложениями для объектов, которые являются порождениями реализаций их внутренних алгоритмов. Такие объекты используются ими временно, для внутренних нужд и не содержат полезной для пользователя информации. Игнорировать такие объекты сам бог велел, ибо зачем обрабатывать мусор?<br>
FILE_ATTRIBUTE_OFFLINE говорит о том, что объект в данный момент недоступен, поэтому его обработка непосредственно сейчас может оказаться невозможной или потребовать от пользователя телодвижений, т.е. неких ручных операций, для обеспечения доступа к нему. Вряд ли пользователя это обрадует, тем более, что он всё равно, зная, что запускает приложения по обработке данных, должен был бы заранее озаботиться предоставлением доступа ко всем таким объектам, и тогда этот атрибут был бы с них уже снят. Да, он может об этом не подумать или просто забыть о парочке таких, однако останов программы, запущенной на ночь для длительной обработки в нерабочее время, в паузу поутру может обернуться неслабыми матюгами. Из-за одного объекта не были обработаны куча других, вполне нормальных. Поэтому будет хорошей практикой все такие объекты обходить, чтоб не тормозить себе работу, однако включить их отчёт о проделанной работе как о непроделанной.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798948</guid>
        <pubDate>Tue, 14 May 2019 20:53:19 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798948</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>ЫукпШ</strong>, да я к тому - что файловый носитель уже давно ушел от древовидной  структуры.<br>
И только упоротый гик пытается делать обход &quot;дерева&quot;, не взирая на все увещевания.<br>
Я кончил.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798947</guid>
        <pubDate>Tue, 14 May 2019 19:55:11 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798947</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798911'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T12:18:09+00:00">14.05.19, 12:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T06:43:36+00:00">14.05.19, 06:43</time></span><div class='quote '>Все эти хардлинки с атрибутами это вторичная проблема, <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">не факт, что с ней столкнёшься</span></strong>.</div></div><br>
Не правда твоя&#33; :) <br>
<br>
Берем системный диск любой современной версии винды и видим сразу же в корне соединение &quot;User&quot; -&gt; &quot;Documents and Settings&quot;:</div></div><br>
Не совсем понятно, о чём дискуссия..<br>
У этой директории просто установлены атрибуты:<br>
FILE_ATTRIBUTE_TEMPORARY | FILE_ATTRIBUTE_OFFLINE | FILE_ATTRIBUTE_REPARSE_POINT<br>
(и конечно FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)<br>
Если захочется специально проигнорировать объект с такими атрибутами<br>
это можно сделать. И в результате игнорировать такую директорию для дальнейших действий.<br>
Если поиск не фильтровать по атрибутам, директория будет найдена.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798928</guid>
        <pubDate>Tue, 14 May 2019 16:10:12 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798928</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T14:41:57+00:00">14.05.19, 14:41</time></span><div class='quote '>и потоков было с лихвой</div></div><br>
<strong class='tag-b'>Олег М</strong> в своих предыдущих сообщения был во многом прав по поводу потоков. А мое резюме - ты люто и бешено зациклен на многопоточности. Народная мудрость гласит &quot;все хорошо в меру&quot;. И тут это как ни кстати - актуально&#33;<br>
<br>
Пример. Берем восми-ядерный проц. И запускаем сборку Цэ++ проекта. Сколько потоков выделить на сборку?<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><a class='tag-url' href='https://ru.stackoverflow.com/questions/609709/%d0%9f%d0%be%d1%87%d0%b5%d0%bc%d1%83-%d0%b2%d0%be-%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d0%bf%d0%be%d1%82%d0%be%d1%87%d0%bd%d1%8b%d1%85-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d1%85-%d0%bd%d1%83%d0%b6%d0%bd%d0%be-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%b2%d0%b0%d1%82%d1%8c-n1-%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b8%d1%85-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%b2/609724#609724' target='_blank'>Тут сикретик</a>. И мой ответ тамошний - в топах. Народ кагбэ одобяет.</div></div> <br>
А вот теперь подумай, у тебя простой скан диска. Сколько операций твой дисковый массив сможет сделать одновременно? Универсального ответа нет. Если это честный хардварный рэйд - он закэширует твои вызовы хорошо, но все равно выполнит их последовательно или псевдо-параллельно. Если это мамковый fake-рэйд, сделает тоже самое, но плюс к тому загрузит камень, к гадалке не ходи&#33; Единственный вменяемый вариант - когда идет одновременный скан n-независимых дисков, сидящих на разных интерфейсах.<br>
<br>
<strong class='tag-b'>Резюме</strong><br>
<br>
1) Если какого-то трудного пересчета нет - не делай потоков больше, чем количество отдельных физических носителей<br>
2) Не верю что 2-х поточная прога на 2-х винтовом рэйде сильно победит однопоточную (если вообще сможет) и не уступит 3-х поточной<br>
<br>
ЗЫ: Если захочешь узнать три Закона Будды - пиши в личку. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-14T16:17:33+00:00">14.05.19, 16:17</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T14:41:57+00:00">14.05.19, 14:41</time></span><div class='quote '>Но в моём случае,это не не нужно и даже вредно. </div></div><br>
Тебе виднее для твоего случая. Без вопросов  :lol:]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798923</guid>
        <pubDate>Tue, 14 May 2019 14:41:57 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798923</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T06:43:36+00:00">14.05.19, 06:43</time></span><div class='quote '>Лучше сосредоточиться на нём, а когда заработает как часы, тогда уже можно заняться и деталями.</div></div><br>
Полностью согласен.На данный момент я и копирование не делаю.Занимаюсь только настройкой поиска и потоков. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-14T14:54:51+00:00">14.05.19, 14:54</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T06:43:36+00:00">14.05.19, 06:43</time></span><div class='quote '>А что встречал - как на каждый чих зафигачить поток, авось система сама разберётся? </div></div><br>
Нет,не встречал.Но встречал программку,которая делала что-то подобное и делала это очень быстро,и потоков было с лихвой.<br>
Вот только кода этой программки я не видел,да и её самой у меня уже нет.<br>
Случайно наткнулся,не думал на тот момент,что сам заинтересуюсь.<br>
Всё,что я пока делал,работает очень медленно.<br>
Всё,что я знаю о той проге, это то,что она работает с большим количеством потоков и с WINAPI.<br>
Пробовал выполнять копирование при помощи Си (FILE*) и WINAPI(CreateFile),заметил,что WINAPI работает намного быстрее.<br>
Думаю я на верном пути. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-14T15:00:10+00:00">14.05.19, 15:00</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798911'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T12:18:09+00:00">14.05.19, 12:18</time></span><div class='quote '>Берем системный диск любой современной версии винды и видим сразу же в корне соединение &quot;User&quot; -&gt; &quot;Documents and Settings&quot;:</div></div><br>
Если я запускаю программу не от имени админа,она эти папки даже не видит,а есть и такие,для которых и вовсе прав админа не достаточно,<br>
нужно что-то вроде привилегий SE_BACKUP_NAME<br>
Но в моём случае,это не не нужно и даже вредно.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798922</guid>
        <pubDate>Tue, 14 May 2019 14:14:20 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798922</link>
        <description><![CDATA[JoeUser: Точнее - лучше не сканить систем диск с корня, иначе сбудутся пророчества тяжёлых времён :-)]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798914</guid>
        <pubDate>Tue, 14 May 2019 12:38:15 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798914</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798911'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T12:18:09+00:00">14.05.19, 12:18</time></span><div class='quote '>Не правда твоя&#33;  </div></div><br>
Необязательно тестировать на Document and Settings.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798911</guid>
        <pubDate>Tue, 14 May 2019 12:18:09 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798911</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798862'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-14T06:43:36+00:00">14.05.19, 06:43</time></span><div class='quote '>Все эти хардлинки с атрибутами это вторичная проблема, <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">не факт, что с ней столкнёшься</span></strong>.</div></div><br>
Не правда твоя&#33; :) <br>
<br>
Берем системный диск любой современной версии винды и видим сразу же в корне соединение &quot;Users&quot; -&gt; &quot;Documents and Settings&quot;:<br>
<br>
<img class='tag-img' src='https://i110.fastpic.ru/big/2019/0514/8d/cc6a5bd3f45db0282b3ee1c03936f18d.png' alt='user posted image'>]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798862</guid>
        <pubDate>Tue, 14 May 2019 06:43:36 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798862</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798838'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T20:28:09+00:00">13.05.19, 20:28</time></span><div class='quote '>Да,я помню,но с тем способом вообще беда у меня.<br>
Я даже нигде не встречах подобие того,что вы описали.</div></div><br>
А что встречал - как на каждый чих зафигачить поток, авось система сама разберётся? <br>
<br>
Вообще - не надо решать все проблемы одновременно. Все эти хардлинки с атрибутами это вторичная проблема, не факт, что с ней столкнёшься. <br>
Основной алгоритм здесь - асинхронный поиск и копирование, у тебя он не решён. Лучше сосредоточиться на нём, а когда заработает как часы, тогда уже можно заняться и деталями.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798852</guid>
        <pubDate>Tue, 14 May 2019 00:29:55 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798852</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T23:01:27+00:00">13.05.19, 23:01</time></span><div class='quote '></div></div><br>
Большое, спасибо&#33;]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798851</guid>
        <pubDate>Mon, 13 May 2019 23:01:27 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798851</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798814'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T17:29:14+00:00">13.05.19, 17:29</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T17:12:39+00:00">13.05.19, 17:12</time></span><div class='quote '>И конечно, проверка на ошибку &quot;ERROR_ACCESS_DENIED&quot;.</div></div><br>
Не подскажете,как сделать эту проверку?</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;BOOL RetC=FALSE;</div><div class="code_line">&nbsp;// ...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hFind = ::FindFirstFile(pTempName, &amp;FindFileData);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(hFind == INVALID_HANDLE_VALUE) {RetC = FALSE;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{RetC = TRUE; }</div><div class="code_line">&nbsp;//...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RetC = ::FindNextFile(...);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;if(RetC == FALSE) </div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;&nbsp; DWORD LE = ::GetLastError();</div><div class="code_line">&nbsp;</div><div class="code_line">// возможные результаты окончания</div><div class="code_line">&nbsp;&nbsp; if(LE == ERROR_NO_MORE_FILES) &nbsp;{...} &nbsp;// ERROR_NO_MORE_FILES = 18, больше файлов не осталось</div><div class="code_line">&nbsp;&nbsp; if(LE == ERROR_FILE_NOT_FOUND) {...} &nbsp;// ERROR_FILE_NOT_FOUND = 2, файл не найден</div><div class="code_line">&nbsp;&nbsp; if(LE == ERROR_PATH_NOT_FOUND) {...} &nbsp;// ERROR_PATH_NOT_FOUND = 3, path не найден</div><div class="code_line">&nbsp;</div><div class="code_line">// доступ запрещён</div><div class="code_line">&nbsp;&nbsp; if(LE == ERROR_ACCESS_DENIED) {...}</div><div class="code_line">&nbsp;</div><div class="code_line">// другое - совсем плохо </div><div class="code_line">&nbsp;}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798838</guid>
        <pubDate>Mon, 13 May 2019 20:28:09 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798838</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798817'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T17:34:57+00:00">13.05.19, 17:34</time></span><div class='quote '>Я ж тебе вроде писал, что достаточно трёх потоков. С тех пор ничего не изменилось.</div></div><br>
Да,я помню,но с тем способом вообще беда у меня.<br>
Я даже нигде не встречах подобие того,что вы описали. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-13T20:28:35+00:00">13.05.19, 20:28</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798834'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T19:49:51+00:00">13.05.19, 19:49</time></span><div class='quote '></div></div><br>
 :blink:]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798834</guid>
        <pubDate>Mon, 13 May 2019 19:49:51 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798834</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798800'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T15:00:24+00:00">13.05.19, 15:00</time></span><div class='quote '>Только не хард-линки, а соединения, да и то только для каталогов.</div></div><br>
Ну я образно. Хотя ты прав недо-хардлинки :)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798802'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T15:05:00+00:00">13.05.19, 15:05</time></span><div class='quote '>Что-то вообще сложное... .Попробую изучить эту тему.Спасибо.</div></div><br>
Так это еще не все, не расслабляйся&#33;  :lol: Надо искать файлы, которых &quot;в явном виде нет, а они есть&quot;. Я про NTFS-потоки, а-ля:<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">echo file-1&#62;file-1.txt</div><div class="code_line">echo secret-1&#62;file-1.txt:secret-1.txt</div></ol></div></div></div></div><br>
Файл secret-1.txt в листинге dir не виден. Но он есть, и он - в потоке файла file-1.txt, и можно убедиться:<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">notepad file-1.txt</div><div class="code_line">notepad file-1.txt:secret-1.txt</div></ol></div></div></div></div>]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798817</guid>
        <pubDate>Mon, 13 May 2019 17:34:57 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798817</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798802'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T15:05:00+00:00">13.05.19, 15:05</time></span><div class='quote '>Какое кол=во потоков можно использовать,для этой задачи?</div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798802'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T15:05:00+00:00">13.05.19, 15:05</time></span><div class='quote '>Функция потока,в свою очередь,копирует найденные файлы на внешний жёсткий,который я тоже укажу.<br>
Для этого я использую функции WINAPI(CreateFile,CreateFileMapping,MapViewOfFile).<br>
Какое кол=во потоков можно использовать,для этой задачи?</div></div><br>
Я ж тебе вроде писал, что достаточно трёх потоков. С тех пор ничего не изменилось.<br>
<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=414782&view=findpost&p=3798301' target='_blank'>Не работает функция в потоке _beginthreadex (сообщение #3798301)</a>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798814</guid>
        <pubDate>Mon, 13 May 2019 17:29:14 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798814</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T17:12:39+00:00">13.05.19, 17:12</time></span><div class='quote '>И конечно, проверка на ошибку &quot;ERROR_ACCESS_DENIED&quot;.</div></div><br>
Не подскажете,как сделать эту проверку?]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798812</guid>
        <pubDate>Mon, 13 May 2019 17:12:39 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798812</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798800'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T15:00:24+00:00">13.05.19, 15:00</time></span><div class='quote '>P.S. Если уж заводить разговор за стратегически правильный код, то там много что учитывать надо. Нужно отсекать как минимум FILE_ATTRIBUTE_TEMPORARY и FILE_ATTRIBUTE_OFFLINE.</div></div><br>
я делал так:<br>
Для файлов     : FILE_ATTRIBUTE_TEMPORARY | FILE_ATTRIBUTE_OFFLINE<br>
Для директорий : FILE_ATTRIBUTE_TEMPORARY | FILE_ATTRIBUTE_OFFLINE | FILE_ATTRIBUTE_REPARSE_POINT<br>
И конечно, проверка на ошибку &quot;ERROR_ACCESS_DENIED&quot;.<br>
Детали я точно не помню. Но ничего страшного с запретом доступа нет.<br>
Перечислить такую директорию (убедиться в её наличии) можно,<br>
а искать файлы внутри нельзя. Произойдёт ошибка и цикл завершиться, ничего<br>
страшного. Следить за этой ошибкой полезно исключительно в информационном смысле,<br>
для выдачи сообщения, что &quot;зайти туда было запрещено&quot;.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798802</guid>
        <pubDate>Mon, 13 May 2019 15:05:00 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798802</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798798'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T14:02:03+00:00">13.05.19, 14:02</time></span><div class='quote '>Все почему-то помнят только про файлы и каталоги, но напрочь забывают по хард-линки.</div></div><br>
Что-то вообще сложное... .Попробую изучить эту тему.Спасибо. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-13T15:39:14+00:00">13.05.19, 15:39</time></span></span><br>
Есть вопрос по кол-ву потоков.<br>
Пишу программку,которая будет искать все файлы на ПК,проверяя расширение файла.<br>
Если расширение файла совпадает с тем,что я укажу,mp4 например,создаёт поток передавая функции потока строку,содержащую полный путь к файлу.<br>
Функция потока,в свою очередь,копирует найденные файлы на внешний жёсткий,который я тоже укажу.<br>
Для этого я использую функции WINAPI(CreateFile,CreateFileMapping,MapViewOfFile).<br>
Какое кол=во потоков можно использовать,для этой задачи?<br>
Пока я просто ищу файлы,передаю строки в потоки и там вывожу их в консоль.<br>
Так же вывожу целое число,которое соответствует кол-ву переданных строк в функцию потока.<br>
Но я заметил,что число файлов показывает разное,при одинаковых условиях.<br>
Чем больше потоков,тем больше разница.<br>
Пробовал от 2 до 5000 потоков.(в качестве эксперимента)<br>
На 500 потоков разнице +-10,на 5000 около 100000 строк.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798800</guid>
        <pubDate>Mon, 13 May 2019 15:00:24 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798800</link>
        <description><![CDATA[Qraizer: Только не хард-линки, а соединения, да и то только для каталогов. Хотя для файлов тоже имеет смысл сканить, чтоб не обрабатывать дубликаты, но к ошибкам это-таки не приведёт.<br><br>P.S. Если уж заводить разговор за стратегически правильный код, то там много что учитывать надо. Нужно отсекать как минимум FILE_ATTRIBUTE_TEMPORARY и FILE_ATTRIBUTE_OFFLINE. Нужно пытаться зайти в очередной каталог и проверять успех, а то вдруг прав нет туда заглядывать, иначе тоже легко можно свалиться в бесконечный скан одного и того же каталога. И если речь о каком-то аналоге бэкапа, было бы неплохо хотя бы пробовать не обновлять время доступа к очередному файлу, чтоб не ломать статистику по частоте использования.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798798</guid>
        <pubDate>Mon, 13 May 2019 14:02:03 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798798</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798796'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T13:23:54+00:00">13.05.19, 13:23</time></span><div class='quote '>Интересный подход</div></div><br>
Интересный подход для FAT, и в тоже время - неинтересный для NTFS. <br>
Все почему-то помнят только про файлы и каталоги, но напрочь забывают по <a class='tag-url' href='https://en.wikipedia.org/wiki/NTFS_junction_point' target='_blank'>хард-линки</a>. <br>
А ведь так можно и улететь в бесконечный скан.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798796</guid>
        <pubDate>Mon, 13 May 2019 13:23:54 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798796</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T13:13:45+00:00">13.05.19, 13:13</time></span><div class='quote '>Так что если где и утечка, то явно не в SearchFiles()</div></div><br>
Согласен.fFile была объявлена глобально.Думаю,проблема была в этой переменной.<br>
Перенёс её в функцию и передаю как аргумент,там же выделяю память.<br>
Перепишу и протестирую.<br>
Спасибо,что проверили. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-13T13:25:10+00:00">13.05.19, 13:25</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T13:02:12+00:00">13.05.19, 13:02</time></span><div class='quote '></div></div><br>
Благодарю.Интересный подход.Обязательно попробую.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798794</guid>
        <pubDate>Mon, 13 May 2019 13:13:45 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798794</link>
        <description><![CDATA[Qraizer: Я проверил твою функцию на своём движке в подобной утилите (поиск совпадающих под контексту файлов). Она показала те же затраты, что и мой движок. И они гораздо скромнее: 168Мб на без малого миллионе файлов. Так что если где и утечка, то явно не в SearchFiles()]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798793</guid>
        <pubDate>Mon, 13 May 2019 13:11:18 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798793</link>
        <description><![CDATA[Sherman: Спасибо,большое.Я уже так сделал,вроде работает.<br>Попробую,как память себя ведёт.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798792</guid>
        <pubDate>Mon, 13 May 2019 13:02:12 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798792</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798776'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T11:37:13+00:00">13.05.19, 11:37</time></span><div class='quote '>К сожалению,я не знаю,как это сделать.Всё,что находил в интернете,связанно с рекурсией.<br>
Если только искать в одной конкретной папке,то без нее.</div></div><br>
Алгоритм простой.<br>
Заготовим 2 списка строк - один для директорий, другой для файлов.<br>
Занесём начальную директорию (полный путь) в список директорий.<br>
Дальше начинается основной алгоритм.<br>
---<br>
1. Проверяем, наличие строк в списке директорий.<br>
2. Если нет - работа окончена, в списке файлов результат поиска. <br>
3. Если есть - извлекаем 1-ю по счёту строку из списка, будем искать в этой директории<br>
- отдельно файлы, добавляя результат в список файлов (полные пути).<br>
- отдельно директории, добавляя результат в список директорий (полные пути).<br>
4. закончился поиск в текущей директории - переход к пункту 1.<br>
Это всё.<br>
---<br>
Результатом работы алгоритма является список строк имен файлов (полные пути).]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798791</guid>
        <pubDate>Mon, 13 May 2019 12:57:57 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798791</link>
        <description><![CDATA[Олег М: <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">DWORD WINAPI Thread(LPVOID gfile) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;// UNREFERENCED_PARAMETER(gfile);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;over++;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;%d %s\r\n&quot;, over, (LPCSTR)gfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GlobalFree(gfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Sleep(8000);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798790</guid>
        <pubDate>Mon, 13 May 2019 12:53:23 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798790</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798788'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T12:45:39+00:00">13.05.19, 12:45</time></span><div class='quote '></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">LPTSTR fFile = (LPTSTR)GlobalAlloc(GMEM_FIXED, lstrlen(lpszFileName) + lstrlen(data_file.cFileName) + 1);</div></ol></div></div></div></div><br>
Я пытаюсь вызвать GlobalFree для LPVOID в функции потока <a class='tag-url' href='https://forum.sources.ru/rules.html' target='_blank'><strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">Правил</span></strong></a>ьный ли это подход?<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">DWORD WINAPI Thread(LPVOID gfile) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;// UNREFERENCED_PARAMETER(gfile);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPTSTR nfile = (LPTSTR)GlobalAlloc(GMEM_FIXED, SizeBuf);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ZeroMemory(nfile, SizeBuf);</div><div class="code_line">&nbsp;&nbsp; &nbsp;lstrcpy(nfile, (TCHAR*)gfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GlobalFree(gfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;over++;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;%d %s\r\n&quot;, over, nfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GlobalFree(nfile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Sleep(8000);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798788</guid>
        <pubDate>Mon, 13 May 2019 12:45:39 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798788</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798786'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T12:42:27+00:00">13.05.19, 12:42</time></span><div class='quote '>fFile пересодаётся,не означает ли это,что прежний fFile будет удалён?</div></div><br>
Нет, не будет. Здесь всё более-менее правильно <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-13T12:47:16+00:00">13.05.19, 12:47</time></span></span><br>
Надеюсь, в потоке ты делаешь для него GlobalFree?]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798786</guid>
        <pubDate>Mon, 13 May 2019 12:42:27 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798786</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798785'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T12:34:14+00:00">13.05.19, 12:34</time></span><div class='quote '>И если ты не удаляешь этот ресурс в вызывающем потоке, то всё будет нормально.</div></div><br>
fFile пересодаётся,не означает ли это,что прежний fFile будет удалён?<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; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LPTSTR fFile = (LPTSTR)GlobalAlloc(GMEM_FIXED, lstrlen(lpszFileName) + lstrlen(data_file.cFileName) + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assert(fFile);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcpy(fFile, lpszFileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcat(fFile, data_file.cFileName);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if( memory(1) &#60; 85 &amp;&amp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ff &#60; THREADS )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hThreadF[ff] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread, (LPVOID)fFile, 0, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;\r\n*********************************************************************\r\n\r\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int i = 0; i &#60; ff; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WaitForSingleObject(hThreadF[i], INFINITE);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int i = 0; i &#60; ff; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(hThreadF[i]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ff = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hThreadF[ff] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread, (LPVOID)fFile, 0, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ff++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798785</guid>
        <pubDate>Mon, 13 May 2019 12:34:14 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798785</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798784'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T12:26:15+00:00">13.05.19, 12:26</time></span><div class='quote '>Когда поток будет создан,функция Thread получит уже изменённую переменную или то,что именно этому потоку и передавалось?</div></div><br>
Поток создаётся сразу, исполняется позже. Значение будет передано то, которое на момент вызова CreateThread. И если ты не удаляешь этот ресурс в вызывающем потоке, то всё будет нормально.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798784</guid>
        <pubDate>Mon, 13 May 2019 12:26:15 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798784</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798777'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T11:39:32+00:00">13.05.19, 11:39</time></span><div class='quote '></div></div><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">hThreadF[ff] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread, (LPVOID)rFile, 0, NULL);</div></ol></div></div></div></div><br>
Он может создаться не сразу,точнее говоря,нужно время на его создание,при этом,переменная (LPVOID)rFile,которую я передаю в поток,после этой строчки,меняется.<br>
Эта переменная не является глобальной.<br>
Когда поток будет создан,функция Thread получит уже изменённую переменную или то,что именно этому потоку и передавалось?]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798779</guid>
        <pubDate>Mon, 13 May 2019 11:47:45 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798779</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798777'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T11:39:32+00:00">13.05.19, 11:39</time></span><div class='quote '>CloseHandle() делаешь для них?</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if( memory(1) &#60; 85 &amp;&amp; // memory(1) %загрузки памяти</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ff &#60; THREADS ) // THREADS = 10</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hThreadF[ff] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread, (LPVOID)rFile, 0, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;\r\n*************************************************************\r\n\r\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int i = 0; i &#60; ff; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WaitForSingleObject(hThreadF[i], INFINITE);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int i = 0; i &#60; ff; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(hThreadF[i]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ff = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hThreadF[ff] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread, (LPVOID)rFile, 0, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ff++;</div></ol></div></div></div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798777'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T11:39:32+00:00">13.05.19, 11:39</time></span><div class='quote '>Покажт полный код</div></div><br>
хорошо,сейчас всё переписываю,как напишу,скину.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798777</guid>
        <pubDate>Mon, 13 May 2019 11:39:32 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798777</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798776'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T11:37:13+00:00">13.05.19, 11:37</time></span><div class='quote '>Не на каждый,кол-во потоков ограниченно 10,когда их становится 10,функция ждёт их завершения и снова создаёт.</div></div><br>
CloseHandle() делаешь для них?<br>
Покажт полный код]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798776</guid>
        <pubDate>Mon, 13 May 2019 11:37:13 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798776</link>
        <description><![CDATA[Sherman: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798749'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T07:43:47+00:00">13.05.19, 07:43</time></span><div class='quote '>Я правильно понимаю, что ты так и создаёшь отдельный поток на каждый файл? </div></div><br>
Не на каждый,кол-во потоков ограниченно 10,когда их становится 10,функция ждёт их завершения и снова создаёт. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-13T11:39:09+00:00">13.05.19, 11:39</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798759'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-05-13T09:35:40+00:00">13.05.19, 09:35</time></span><div class='quote '>Если не нравится рекурсивный поиск, сделай не рекурсивный.</div></div><br>
К сожалению,я не знаю,как это сделать.Всё,что находил в интернете,связанно с рекурсией.<br>
Если только искать в одной конкретной папке,то без нее.]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798759</guid>
        <pubDate>Mon, 13 May 2019 09:35:40 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798759</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798724'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-12T17:14:41+00:00">12.05.19, 17:14</time></span><div class='quote '>Я предполагаю,проблема в инициализации переменных в начале кода и в самой рекурсии.</div></div><br>
Если не нравится рекурсивный поиск, сделай не рекурсивный.<br>
Сравни результаты и выбери то, что больше понравилось.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798749</guid>
        <pubDate>Mon, 13 May 2019 07:43:47 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798749</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414833&view=findpost&p=3798724'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Sherman &#064; <time class="tag-quote__quoted-time" datetime="2019-05-12T17:14:41+00:00">12.05.19, 17:14</time></span><div class='quote '>Но,как я заметил,сжирает постепенно память(примерно 400мб с заполненного диска в 100Гб,около 220000 файлов),заполняя не выгруженный пул памяти.<br>
</div></div><br>
220 тыс файлов? <br>
Я правильно понимаю, что ты так и создаёшь отдельный поток на каждый файл? Если да, то они, потоки, и жрут память.]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798724</guid>
        <pubDate>Sun, 12 May 2019 17:14:41 +0000</pubDate>
        <title>Рекурсивный поиск файлов заполняет не выгруженный пул памяти Си WINAPI</title>
        <link>https://forum.sources.ru/index.php?showtopic=414833&amp;view=findpost&amp;p=3798724</link>
        <description><![CDATA[Sherman: Приветствую,джентельмены.<br>
Пытаюсь выполнить поиск файлов на локальном диске,включая файлы во всех каталогах.<br>
Использовал для этого примеры,которые можно найти в интернете.<br>
Файлы находит,с этим проблем нет.<br>
Но,как я заметил,сжирает постепенно память(примерно 400мб с заполненного диска в 100Гб,около 220000 файлов),заполняя не выгруженный пул памяти.<br>
Я предполагаю,проблема в инициализации переменных в начале кода и в самой рекурсии.<br>
Если найденный файл является директорией(папкой),функция вызывает сама себя,передавая в качестве аргумента найденную папку и снова,и снова.<br>
Если файл не является директорией,строка передаётся в другую функцию.<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">DWORD WINAPI SearchFiles(LPVOID lpName)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPTSTR lpszFileName = (LPTSTR)GlobalAlloc(GMEM_FIXED, 1024);//lpszFileName,path переменные,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPTSTR path &nbsp; &nbsp; &nbsp; &nbsp; = (LPTSTR)GlobalAlloc(GMEM_FIXED, 1024); &nbsp; &nbsp;//которые инициализируются</div><div class="code_line">&nbsp;&nbsp; &nbsp;ZeroMemory(lpszFileName, 1024); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//и не выгружаются</div><div class="code_line">&nbsp;&nbsp; &nbsp;ZeroMemory(path, 1024);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lstrcpy(lpszFileName, lpName);</div><div class="code_line">&nbsp;&nbsp; &nbsp;lstrcpy(path, lpszFileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp;lstrcat(path, &quot;*.*&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;HANDLE hand;</div><div class="code_line">&nbsp;&nbsp; &nbsp;WIN32_FIND_DATA data_file;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hand = FindFirstFile(path, &amp;data_file);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (hand != INVALID_HANDLE_VALUE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!strncmp(data_file.cFileName, &quot;.&quot;, 1) || !strncmp(data_file.cFileName, &quot;..&quot;, 2))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (data_file.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcpy(path, lpszFileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcat(path, data_file.cFileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcat(path, &quot;\&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!lstrcmpi(path, WinPathD) == 0) //WinPathD - папка windows</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SearchFiles((LPVOID)path); //тут функция вызывает сама семя</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcpy(file, lpszFileName); &nbsp; &nbsp;// file глобальная переменная типа LPTSTR</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lstrcat(file, data_file.cFileName);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Thread(file);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} while (FindNextFile(hand, &amp;data_file) != 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;FindClose(hand);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GlobalFree(lpszFileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GlobalFree(path);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Sherman</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	