如果為Reserve選擇了一個(gè)回調(diào)函數(shù),那么當(dāng)一個(gè)新的線程開始調(diào)用這個(gè)DLL時(shí),這個(gè)回調(diào)函數(shù)首先被調(diào)用。可以利用這個(gè)函數(shù)為新線程使用到的數(shù)據(jù)做初始化工作。線程在使用完這個(gè)DLL之后,它會(huì)去調(diào)用Unreserve中指定的回調(diào)函數(shù)。Abort中指定的函數(shù)用于VI非正常結(jié)束時(shí)被調(diào)用,也就是讓一個(gè)程序在運(yùn)行完前停止。這些回調(diào)函數(shù)的原型在Prototype for these procedures中列出,必須要由DLL的開發(fā)者按照特定的格式實(shí)現(xiàn)。如果使用的DLL不是專為L(zhǎng)abVIEW設(shè)計(jì)的,一般不會(huì)包含這樣的回調(diào)函數(shù)。
如果C語言的struct中含有一個(gè)指針,LabVIEW中的cluster只能用一個(gè)U32數(shù)值(32位系統(tǒng)上,64位系統(tǒng)上使用U64)來表示指針的地址,而不能將指針?biāo)赶虻膬?nèi)容放到Cluster中去。如果聲明的是指向struct的指針,才能在LabVIEW中使用cluster與之對(duì)應(yīng)。CLN節(jié)點(diǎn)的配置面板中,沒有一個(gè)專門命名的“struct”或者“cluster”參數(shù)類型,應(yīng)選擇“Adapt to Type”就可以了。如果參數(shù)的類型就是結(jié)構(gòu)而非指針,考慮到C函數(shù)參數(shù)的壓棧順序,把一個(gè)結(jié)構(gòu)體作為參數(shù)傳給函數(shù),相當(dāng)于把結(jié)構(gòu)中每個(gè)元素分別作為參數(shù)傳遞給函數(shù)。圖6為C語言中struct和LabVIEW中cluster的部分匹配圖。