Hi Tom, the "Datab" (or Byte-Array I called it for me ;-)) is used like the other array type datarefs. You need to reserve a memory area for your data, e.g. char MyText[10]. Then, when the user of your dataref calls your provider function, he provides a pointer to a reserved memory area of its own (void* outValue), an offset to your pointer, from which he want to get the data from (int inOffset) and finally the count of data elements he want to get (long inLenght). In your provider function you now just copy the content from your memory area to the memory area of the user, where inOffset defines the starting point from your pointer and inLength defines the size of the copied memory block. In case of the Datab ref, inLength is always the size in bytes already, for other types you have to calculate the bytesize like "sizeof(int) * inLength" for an integer array. Example: "memcpy(outValue, MyRefText + inOffset, inLength)", where inOffset is "0" and inLength is "10", this will copy 10 bytes starting from MyText + 0 to the provided memory pointer "outValue". Of course, you would have to make sure, that inOffset and inLength are always in the allowed range of your reserved memory, otherwise the memcopy function could cause crashes ;-). Thats the solution that works for me and it came straight out of the examples of the SDK, but there may other working solutions too. Also I just realized, that the range checking code in the example from the .org thread is not very robust, so I will have to change my provider functions a bit. Cheers Jan