IBinaryDataBase::RepresentAs
Перейти к навигации
Перейти к поиску
return_code_t RepresentAs(BinaryDataStorageType type_id, void** ppInterface) noexcept;
Осуществляет преобразование в интерфейс, заданный идентификатором.
- Параметры
type_id 32-х битовое целое, принимающее одно из следующих значений идентификаторов интерфейсов. Символическое имя Целочисленное значение Интерфейс, соответствующий идентификатору. BinaryDatabaseType 0 IBinaryDataBase InputBinaryDataType 1 IInputBinaryData InputBinaryDataContiguousAccessType 2 IInputBinaryDataContiguousAccess InMemoryInputBinaryDataType 3 IInMemoryInputBinaryData OutputBinaryDataType 256 IOutputBinaryData OutputBinaryDataContiguousAccessType 257 IOutputBinaryDataContiguousAccess IOBinaryDataType 512 IIOBinaryData IOBinaryDataContiguousAccessType 513 IIOBinaryDataContiguousAccess InMemoryIOBinaryDataType 514 IInMemoryIOBinaryData [out] ppInterface Выходной указатель, принимающий интерфейс заданного типа или 0 в случае ошибки. - Возвращаемое значение:
- 32-битовый целый код ошибки, который в случае успешного выполнения неотрицателен (старший бит сброшен). В случае, если интерфейс, заданный идентификатором, не поддерживается, возвращается код CHSVERROR_INVALID_PARAMETER.
В случае успешного завершения функции, полученный через параметр ppInterface объект необходимо закрывать вызовом его метода Release отдельно и независимо от объекта, над которым применен метод RepresentAs.
Для проверки доступности того или иного интерфейса предпочтительно использовать метод IBinaryDataBase::IsInterfaceAvailable.
Пример:
char l_filename[] = "./somefile";
std::size_t cb_filename = sizeof(l_filename) - 1 /*term. 0*/;
IContiguousDataStorage* pIO = nullptr;
IDataStorage* pStorage = nullptr;
return_code_t err = CreateFileAsBinaryDataStorage(l_filename, cb_filename, FileRead | FileWrite, FileCreateAlways, &pStorage);
if (err < 0)
goto cleanup; //failure of CreateFileAsBinaryDataStorage
err = pStorage->IsInterfaceAvailable(ContiguousDataStorageType);
if (err < 0)
goto cleanup; //failure of IsInterfaceAvailable
err = pStorage->RepresentAs(ContiguousDataStorageType, (void**) &pIO);
if (err < 0)
goto cleanup; //failure of RepresentAs
//access the file via pIO...
cleanup:
if (pStorage)
pStrorage->Release();
if (pIO)
pIO->Release();