All the data structures are a fixed size. They are allocated to a contiguous array starting at the beginning of the buffer. When they need to refer to variable-length strings, the data structures will contain pointers in the form of WORD offsets into the buffer. All strings should be null-terminated. The driver should allocate space in the buffer to store these strings, starting at the end of the buffer and growing downward. When there is insufficient room in the middle for one more structure and its attendant strings, the driver stops adding data and returns the WN_MORE_DATA value.