IDataStorage::IsInterfaceAvailable: различия между версиями
Перейти к навигации
Перейти к поиску
Ninok2801 (обсуждение | вклад) (Новая страница: «{{function_begin | return_code_t IsInterfaceAvailable(DataStorageTypeId type_id) const noexcept; |{{IDataStorage::IsInterfaceAvailable brief}}}} {{function_paraml…») |
|||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{function_begin | return_code_t IsInterfaceAvailable(DataStorageTypeId type_id) const noexcept; |{{IDataStorage::IsInterfaceAvailable brief}}}} | {{function_begin|return_code_t PLATFORM_NATIVE_CALLING_CONVENTION IsInterfaceAvailable(DataStorageTypeId type_id) const noexcept; |{{IDataStorage::IsInterfaceAvailable brief}}}} | ||
{{function_paramlist begin}} | {{function_paramlist begin}} | ||
{{function_paramlist add|type_id|32-х битовое целое, принимающее одно из следующих значений идентификаторов интерфейсов. {{DataStorageTypeId}}}} | {{function_paramlist add|type_id|32-х битовое целое, принимающее одно из следующих значений идентификаторов интерфейсов. {{DataStorageTypeId}}}} | ||
{{function_paramlist end}} | {{function_paramlist end}} | ||
{{function_return_value|32-битовый целый код ошибки. В случае, если заданный идентификатором интерфейс поддерживается, возвращается | {{function_return_value|32-битовый целый код ошибки. В случае, если заданный идентификатором интерфейс поддерживается, возвращается [https://www.chusov.org/doxygen/group___error_handling.html#CHSVCODES CHSVERROR_SUCCESS] (младший бит сброшен). Если интерфейс не поддерживается, возвращается [https://www.chusov.org/doxygen/group___error_handling.html#CHSVCODES CHSVERROR_SUCCESS_FALSE] (младший бит установлен). В случае ошибки возвращается отрицательный код ошибки.}} | ||
{{function_end}} | {{function_end}} | ||
{{example_begin}} | |||
{{CreateFileAsBinaryDataStorage example}} | |||
{{example_end}} |
Текущая версия на 14:01, 15 августа 2019
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();