Звучит так, будто вы пытаетесь просто привести адрес от struct
к char*
и использовать на нем ostream::write
.Это просто не работает.Есть заполнение, но есть также размер различных типов (которые варьируются от одной платформы к другой), порядок байтов и на некоторых более экзотических платформах (включая большинство мэйнфреймов) представление самих данных.Как правило, вам необходимо указать, как должны выглядеть выходные данные, побайтно, а затем вы должны записать каждый байт с требуемым значением.
И это только для простых типов.Быстрый взгляд на BRUSHOBJ показывает, что он содержит указатель, которому вы, вероятно, должны будете следовать - вам, безусловно, придется что-то с ним делать, поскольку принимающая сторона не сможет ничего сделать с указателем на ваши данные,(Подозреваю, учитывая описание, что вам придется преобразовать его в какой-то идентификатор, а также передать словарь, отображающий такие идентификаторы на объекты. Но я не знаю достаточно о том, как эта структура используется, чтобы быть уверенной.)