![]() |
LabVIEW Memory Manager - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: DLL & externer Code (/Forum-DLL-externer-Code) +---- Thema: LabVIEW Memory Manager (/Thread-LabVIEW-Memory-Manager) Seiten: 1 2 |
LabVIEW Memory Manager - abrissbirne - 19.02.2009 18:03 ' schrieb:Tja ich habe das mal so getan dass ich eine Funktion hatte der das Handle als Parameter passed by reference übergeben wurde. Dann habe ich das Handle das in der DLL alloziert und gefüllt wurde mit dem Handle das von LabVIEW kam ganz einfach ausgetauscht. Ersparte mir eine Datenkopie. Du musst in Deiner DLL Funktion nur darauf achten dass das neue Handle entweder ein gültiges Handle ist, das man also mit DSSetHandleSize() in der Grösse anpassen kann, oder ein NULL Handle. (LabVIEW verwendet intern, und bei Handle Parametern die passed by reference sind, NULL als Alternative für ein leeres Handle also ein Array oder String der nur die Längenangabe 0 enthält.) In dem Fall müsste man dann halt DSNewHandle() verwenden.Das klingt auf jeden Fall interessant. HAbe noch nie mit der InterlockedExchange() Funktion gearbeitet, diese wird aber sicherlich in der MSDN dokumentiert sein. Die Idee gefällt mir auf jeden Fall sehr. |