IDataStorage::IsInterfaceAvailable
Перейти к навигации
Перейти к поиску
return_code_t PLATFORM_NATIVE_CALLING_CONVENTION IsInterfaceAvailable(DataStorageTypeId type_id) const noexcept;
Проверяет доступность интерфейса по его идентификатору.
- Параметры
type_id 32-х битовое целое, принимающее одно из следующих значений идентификаторов интерфейсов. Символическое имя Целочисленное значение Описание DataStorageType 0 Идентификатор интерфейса IDataStorage. ConsequentDataStorageInputType 2 Идентификатор интерфейса IConsequentDataStorageInput. ArbitrarilyAccessedDataStorageInputType 3 Идентификатор интерфейса IArbitrarilyAccessedDataStorageInput. ContiguousDataStorageInputType 4 Идентификатор интерфейса IContiguousDataStorageInput. InMemoryDataStorageInputType 5 Идентификатор интерфейса IInMemoryDataStorageInput. AssociativeDataStorageInputType 6 Идентификатор интерфейса IAssociativeDataStorageInput. ConsequentDataStorageOutputType 0x101 Идентификатор интерфейса IConsequentDataStorageOutput. ArbitrarilyAccessedDataStorageOutputType 0x102 Идентификатор интерфейса IArbitrarilyAccessedDataStorageOutput. ContiguousDataStorageOutputType 0x103 Идентификатор интерфейса IContiguousDataStorageOutput. AssociativeDataStorageOutputType 0x103 Идентификатор интерфейса IAssociativeDataStorageOutput. ConsequentDataStorageType 0x201 Идентификатор интерфейса IConsequentDataStorage. ArbitrarilyAccessedDataStorageType 0x202 Идентификатор интерфейса IArbitrarilyAccessedDataStorage. ContiguousDataStorageType 0x203 Идентификатор интерфейса IContiguousDataStorage. InMemoryDataStorageType 0x204 Идентификатор интерфейса IInMemoryDataStorage. AssociativeDataStorageType 0x205 Идентификатор интерфейса IAssociativeDataStorage. - Возвращаемое значение:
- 32-битовый целый код ошибки. В случае, если заданный идентификатором интерфейс поддерживается, возвращается CHSVERROR_SUCCESS (младший бит сброшен). Если интерфейс не поддерживается, возвращается CHSVERROR_SUCCESS_FALSE (младший бит установлен). В случае ошибки возвращается отрицательный код ошибки.
Пример
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();