LabVIEWForum.de - LabVIEW Memory Manager

LabVIEWForum.de

Normale Version: LabVIEW Memory Manager
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
' 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.

Wenn Du aber sowieso NumericArrayResize() verwendest erübrigt sich diese letzte Bemerkung aber, da diese Funktion auch mit NULL Handles korrekt umgeht.

Rolf Kalbermatter

PS: Den Handle Exchange solltest Du mit einer Funktion wie etwa InterlockedExchange() machen da Du ansonsten in Race Conditions laufen kannst.
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.
Seiten: 1 2
Referenz-URLs