<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Странное поведение примера "03 - Preserved Variables"]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/581/" />
	<updated>2015-10-14T12:08:21Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/581/</id>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2905/#p2905" />
			<content type="html"><![CDATA[<p>Здравствуйте!<br />На этой недели выходит Guardant SDK Update 2, в его составе будет исправленный пример.</p>]]></content>
			<author>
				<name><![CDATA[Станислав Петрушевский]]></name>
				<uri>https://forum.guardant.ru/user/818/</uri>
			</author>
			<updated>2015-10-14T12:08:21Z</updated>
			<id>https://forum.guardant.ru/post/2905/#p2905</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2899/#p2899" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Станислав Петрушевский пишет:</cite><blockquote><p>При вызове GrdCodeRun в буфер abInBuffer неявно записываются данные из массива iodata ( которые были записаны в dwP1=1)</p></blockquote></div><p>Т.е.:<br />1) Буфер вывода ведет себя аналогично NO_INIT-переменной?<br />2) Получается, что демонстрационный пример следует изменить, т.к. сейчас он демонстрирует то, без чего он и так &quot;работает&quot;)</p>]]></content>
			<author>
				<name><![CDATA[dayznse]]></name>
				<uri>https://forum.guardant.ru/user/809/</uri>
			</author>
			<updated>2015-10-10T20:51:54Z</updated>
			<id>https://forum.guardant.ru/post/2899/#p2899</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2894/#p2894" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>dayznse пишет:</cite><blockquote><p>Решил поэкспериментировать с примером &quot;03 - Preserved Variables&quot; для Code-ключей. В оригинальном примере загружаемый код вызывается дважды: один раз с параметром dwP1=1 (чтобы сохранить буфер в RAM-ключа), второй раз с параметром dwP2=2 (чтобы получить содержимое из RAM-ключа).<br />Оказалось, что если второй раз вызвать загружаемый код с параметром dwP1=3 (так чтобы ничего не выполнялось и вернулась -1), то в массив abInBuffer все равно записывается содержимое RAM ключа, хотя перед вызовом этот массив явно обнуляется, а внутри ключа (в коде) явного копирования не происходит. Сначала решил, что каким-то образом iodata[] и buffer[100] указывают на одну и ту же область памяти, но потом проверил адреса массивов и они оказались разные.</p><p>Поясните, пожалуйста, почему в массив abInBuffer (в основной программе) автоматически записывается содержимое buffer[100] (из ключа), несмотря на то, что я передаю dwP1=3, и соответственно, код копирования не выполняется (проверял)?</p></blockquote></div><p>В примере 3 буфер iodata используется как буфер ввода и вывода:&nbsp; <br />При вызове GrdCodeRun в буфер abInBuffer неявно записываются данные из массива iodata ( которые были записаны в dwP1=1)</p>]]></content>
			<author>
				<name><![CDATA[Станислав Петрушевский]]></name>
				<uri>https://forum.guardant.ru/user/818/</uri>
			</author>
			<updated>2015-10-09T09:50:27Z</updated>
			<id>https://forum.guardant.ru/post/2894/#p2894</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2893/#p2893" />
			<content type="html"><![CDATA[<p>Здравствуйте!</p><p>1. Буфер ввода&nbsp; неявно обновляется при вызове (новыми данными если они переданы ключу).<br />Буфер вывода не обновляется.</p><p>2. Правильнее будет объявлять extern DWORD iodata[] c указанием размера в makefile.</p>]]></content>
			<author>
				<name><![CDATA[Станислав Петрушевский]]></name>
				<uri>https://forum.guardant.ru/user/818/</uri>
			</author>
			<updated>2015-10-09T09:49:04Z</updated>
			<id>https://forum.guardant.ru/post/2893/#p2893</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2880/#p2880" />
			<content type="html"><![CDATA[<p>Здравствуйте!<br />Мы переадресовали Ваши вопросы нашим разработчикам. Ответ будет до конца этой недели.</p>]]></content>
			<author>
				<name><![CDATA[Станислав Петрушевский]]></name>
				<uri>https://forum.guardant.ru/user/818/</uri>
			</author>
			<updated>2015-10-06T12:02:18Z</updated>
			<id>https://forum.guardant.ru/post/2880/#p2880</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2876/#p2876" />
			<content type="html"><![CDATA[<p>Правильно ли я понимаю, что буферы ввода-вывода в ключе:<br />1) Сохраняют свои данные между вызовами загружаемого кода точно также, как и NO_INIT-переменные?<br />2) Размер буфера определяется не размером, указанном в коде для ключа, а размером заданном в makefile? Т.е. например, если в коде буфер буден задан как char iodata[512], а в makefile CFG_OUTPUT_BUFFER_SIZE=0x400, то реальный размер буфера будет 0x400, а не 0x200?</p>]]></content>
			<author>
				<name><![CDATA[dayznse]]></name>
				<uri>https://forum.guardant.ru/user/809/</uri>
			</author>
			<updated>2015-10-05T22:06:06Z</updated>
			<id>https://forum.guardant.ru/post/2876/#p2876</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Странное поведение примера "03 - Preserved Variables"]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2875/#p2875" />
			<content type="html"><![CDATA[<p>Решил поэкспериментировать с примером &quot;03 - Preserved Variables&quot; для Code-ключей. В оригинальном примере загружаемый код вызывается дважды: один раз с параметром dwP1=1 (чтобы сохранить буфер в RAM-ключа), второй раз с параметром dwP2=2 (чтобы получить содержимое из RAM-ключа).<br />Оказалось, что если второй раз вызвать загружаемый код с параметром dwP1=3 (так чтобы ничего не выполнялось и вернулась -1), то в массив abInBuffer все равно записывается содержимое RAM ключа, хотя перед вызовом этот массив явно обнуляется, а внутри ключа (в коде) явного копирования не происходит. Сначала решил, что каким-то образом iodata[] и buffer[100] указывают на одну и ту же область памяти, но потом проверил адреса массивов и они оказались разные.</p><p>Поясните, пожалуйста, почему в массив abInBuffer (в основной программе) автоматически записывается содержимое buffer[100] (из ключа), несмотря на то, что я передаю dwP1=3, и соответственно, код копирования не выполняется (проверял)?</p>]]></content>
			<author>
				<name><![CDATA[dayznse]]></name>
				<uri>https://forum.guardant.ru/user/809/</uri>
			</author>
			<updated>2015-10-05T12:16:58Z</updated>
			<id>https://forum.guardant.ru/post/2875/#p2875</id>
		</entry>
</feed>
