Byte array in memoria come parametro per External Function

Salve qualcuno mi pu indicare come dichiarare una Byte Array che risiede in memoria ed ha dimensione variabile in una External function?

La funzione originale questa:

Declare Function compress Lib “zlib1.dll” ( _
ByVal dest() As Byte, _
ByRef destLen As Uint64, _
ByVal src() As Byte, _
ByVal srcLen As Uint64) _
As Uint64

ho provato a passare una Cstring al posto di byte array come indicato sotto:

Declare Function compress Lib “zlib1.dll” ( _
ByVal dest As Cstring, _
ByRef destLen As Uint64, _
ByVal src As Cstring, _
ByVal srcLen As Uint64) _
As Uint64

ma mi genera un file .zip illeggibile.

in pratica in “src” ci sono i dati di un file letto in BinaryStream, in “srclen” la lunghezza totale dei dati inviati in “src”, in “dest” una stringa riempita di &h0 lunga quanto “src” + alcuni byte in pi che derivano da questo calcolo destLen = srcLen * 1.01 + 12

Il file viene creato ma ho fatto il dump ed pieno di &h0 e non dei dati compressi.

Ptr e gli assegni il memoryblock?

Antonio is correct. Declare the parameter as a Ptr type, and then use a MemoryBlock when you call it:

Declare Function compress Lib "zlib1.dll" (Output As Ptr, ByRef OutLen As UInt32, Source As Ptr, SourceLen As UInt32) As Integer

See also my code for using zlib here: https://github.com/charonn0/RB-zlib/blob/master/zlib/zlib.rbbas#L26

Grazie Antonio and Thank you Andrew for your information, ora prover sono stato fermo un paio di giorni per motivi di salute comunque grazie a tutti e due