IDataStorage::IsInterfaceAvailable: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «{{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-битовый целый код ошибки. В случае, если заданный идентификатором интерфейс поддерживается, возвращается 0. Если интерфейс не поддерживается, возвращается 1. В случае ошибки возвращается отрицательный код ошибки.}}
{{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_id32-х битовое целое, принимающее одно из следующих значений идентификаторов интерфейсов.
Символическое имяЦелочисленное значениеОписание
DataStorageType0Идентификатор интерфейса IDataStorage.
ConsequentDataStorageInputType2Идентификатор интерфейса IConsequentDataStorageInput.
ArbitrarilyAccessedDataStorageInputType3Идентификатор интерфейса IArbitrarilyAccessedDataStorageInput.
ContiguousDataStorageInputType4Идентификатор интерфейса IContiguousDataStorageInput.
InMemoryDataStorageInputType5Идентификатор интерфейса IInMemoryDataStorageInput.
AssociativeDataStorageInputType6Идентификатор интерфейса IAssociativeDataStorageInput.
ConsequentDataStorageOutputType0x101Идентификатор интерфейса IConsequentDataStorageOutput.
ArbitrarilyAccessedDataStorageOutputType0x102Идентификатор интерфейса IArbitrarilyAccessedDataStorageOutput.
ContiguousDataStorageOutputType0x103Идентификатор интерфейса IContiguousDataStorageOutput.
AssociativeDataStorageOutputType0x103Идентификатор интерфейса IAssociativeDataStorageOutput.
ConsequentDataStorageType0x201Идентификатор интерфейса IConsequentDataStorage.
ArbitrarilyAccessedDataStorageType0x202Идентификатор интерфейса IArbitrarilyAccessedDataStorage.
ContiguousDataStorageType0x203Идентификатор интерфейса IContiguousDataStorage.
InMemoryDataStorageType0x204Идентификатор интерфейса IInMemoryDataStorage.
AssociativeDataStorageType0x205Идентификатор интерфейса 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();