__TFACE::Marshal
Перейти к навигации
Перейти к поиску
Параметры
Возвращаемое значение: Созданный запаковщик, с ассоциированным запакованным полигоном.
Возможные исключения
См. также
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TFACE<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const;
package_const_reference<__TFACE<unit_t, alloc_t>> Marshal(void* pBuffer, size_type cbBuffer) const;
Функция маршаллинга полигона.
- Создает и возвращает запаковщик package, управляющий данными и выделенной им для этих данных памятью.
- Создает и возвращает запаковщик package_reference, управляющий данными, записываемыми в предоставленный извне буфер. Ответственность за управления буфером в данном случае ложится на вызывающего.
packed_alloc | Менеджер памяти, который должен использоваться объектом package. | |
[in] | pBuffer | Указатель на буфер памяти, который будет использоваться объектом package_reference для записи в этот буфер запакованного полигона. |
cbBuffer | Байтовый размер предоставленного извне буфера, который должен быть не меньше значения, возвращаемого методом __TFACE::MarshalSize. |
Фактически методы делегируют вызовы конструкторам создаваемых и возвращаемых запаковщиков, package и package_reference соответственно, которые создают и управляют запакованными данными, и, для перегрузки 1, памятью:
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TFACE<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const
{
return package<packed_alloc_t, __TFACE<unit_t, alloc_t>>(std::allocator_arg, packed_alloc, *this);
}
package_const_reference<__TFACE<unit_t, alloc_t>> Marshal(_Out_bytecap_(cbBuffer) void* pBuffer, size_type cbBuffer) const
{
return package_const_reference<__TFACE<unit_t, alloc_t>>(pBuffer, cbBuffer, *this);
}
Вместо вызова данного метода предпочтительнее использовать запаковщик напрямую, либо через вспомогательную функцию make_package.
Перегрузка 1 не генерирует исключений, но исключения, сгенерированные менеджером памяти не перехватываются. | |
Chusov::Exceptions::InsufficientBufferException | Исключение, которое может быть сгенерировано перегрузкой 2 в случае, если предоставлен слишком малый буфер pBuffer. |
package | Используемый методом запаковщик. |
default_package_allocator | Используемый запаковщиком менеджер памяти по умолчанию. |
Allocator | Требования к пользовательскому менеджеру памяти. |