如何支持传递非指针值.use DLL,VARIANT

E.g:

//BmOpcDaClt_API BOOL _stdcall BMDACReadItem(DWORD ServerHandle,DWORD GroupHandle,DWORD ItemHandle,VARIANT* Value,FILETIME* pTimeStamp,WORD* pQuality)

var Value *ole.VARIANT
Value1 := ole.VARIANT{}
Value = &Value1

var pTimeStamp *w32.FILETIME
pTimeStamp1 := w32.FILETIME{}
pTimeStamp = &pTimeStamp1
var pQuality *uint16
var pQuality1 uint16 = 0
pQuality = &pQuality1

BMDAC_ReadItem.Call(uintptr(ConnectHandle), uintptr(GroupHandle), uintptr(ItemHandle), uintptr(unsafe.Pointer(Value)), uintptr(unsafe.Pointer(pTimeStamp)), uintptr(unsafe.Pointer(pQuality)))

// this is ok!!! //but

//BmOpcDaClt_API BOOL _stdcall BMDACWriteItem(DWORD ServerHandle,DWORD GroupHandle,DWORD ItemHandle,VARIANT Value, BOOL DoAsync)

BMDAC_WriteItem.Call(uintptr(ConnectHandle), uintptr(GroupHandle), uintptr(ItemHandle), ????, uintptr(0))

//How to do ?