Hello Peter,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Your suggestions make sense to me, except one. The MIDIObjectRef values returned by the various functions in the CoreMIDI API are not pointers but rather unsigned 32-bit integers used as unique identifiers for the various &quot;midi objects&quot;. Given that fact, I don&#39;t think it makes sense to use INativeObject, unless I am confused about something.<br>
</blockquote><div><br></div><div>The &quot;Handle&quot; is merely that, a token that represents the unmanaged object.   There is no magic associated with the IntPtr, other than the fact that an IntPtr can fit both an &quot;int&quot; and the native platform &quot;void *&quot;, which happens to be two common ways of representing tokens in C APIs.</div>
<div><br></div><div>Miguel</div></div>