Existing code relies on GetDataBuffer() returning a valid pointer, so we need to ensure that this is the case, even if this means copying the data into an internal buffer.