<div class="gmail_quote">2009/7/2 Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Jul  2, Elena Garrulo wrote:<br>
&gt; Well, I finally nailed it down.  It would look like this (code<br>
&gt; shrinked down from major example, not tested!) :<br>
&gt;<br>
&gt; ;; void fill_buffer (BYTE* buffer, DWORD* buffer_size);<br>
&gt; (define fill_buffer<br>
&gt;   (get-ffi-obj &quot;fill_buffer&quot;<br>
&gt;                my_dll<br>
&gt;                (_fun<br>
&gt;                 (buffer : _pointer)<br>
&gt;                 (buffer_size : ((_ptr io _DWORD)))<br>
&gt;                 -&gt; _void<br>
&gt;                 -&gt; (list buffer_size)))) ;; &lt;- OUTPUT?<br>
<br>
</div>I&#39;m still not sure about the point of this -- is the foreign function<br>
supposed to put data in your block and tell you the size of the data<br>
through the extra return value (eg, instead of using 0 as a<br>
terminator, or instead of you giving it a block of the right size)?<br>
IMO, this doesn&#39;t sound like a good API.</blockquote><div><br>You got the point. They are legacy Win32 APIs.  <br>
<div class="im"></div></div><div><br>Thank you for your other suggestions.<br> <br></div></div>