Looking at it, I would say it's a bad translation.
You should be setting the field size to 0 and then pass that image to the Setup function for the details, it will fail because the record won't be large enough, but the return value will report to you how large it should be.
With your now known value, you can either give it a record that has more than enough space or allocate one dynamically of the requested record size and then pass that pointer to the setup function.
That isn't a fixed size record and I suppose if there is enough space in it the function will fill it up to the amount of space it needs, leaving the remainder undefined.
That is a variable record with a variant tail size and the idea is that you can daisy chain these devices with a NULL separator, and in most cases, two NULLs will indicate the end of the line.