IInMemoryDataStorage
Интерфейс для чтения и записи данных в накопитель, связанный с буфером в памяти.
Метод | Описание |
---|---|
GetPtr | Возвращает адрес управляемого накопителем буфера данных в памяти. |
ReleaseBufferOwnership | Возвращает управляемый накопителем буфер данных в памяти с передачей владения буфером клиенту. |
Класс | Описание |
---|---|
Интерфейс для чтения и записи в накопитель последовательно расположенных и однородных данных. |
Данные накопителя с интерфейсом IInMemoryDataStorage физически располагаются в памяти машины и могут быть адресованы прямо с использованием указателей C и ссылок C++. Такой накопитель предполагает произвольный доступ к элементам данных, размер и семантика которых определяются реализацией. Следовательно, налагается требование к однородности элементов в памяти, которыми, как минимум, могут быть байты.
Для адресации элементов используются унаследованные методы IContiguousDataStorage, а также пара собственных методов - GetPtr, позволяющий получить непосредственный адрес связанного с накопителем буфера в виде указателя C и размер этого буфера в байтах, а также метод ReleaseBufferOwnership, который позволяет получить тот же буфер данных, а также передать владение этим буфером клиенту.
Сложность доступа к элементам буфера постоянна.
Гарантируется, что любая реализация интерфейса IInMemoryDataStorage будет также поддерживать интерфейсы IArbitrarilyAccessedDataStorage и IConsequentDataStorage, а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод IDataStorage::RepresentAs, который наследуется интерфейсом IInMemoryDataStorage.

При использовании интерфейса IArbitrarilyAccessedDataStorage ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для наследуемых методов IContiguousDataStorage::ReadAt и IContiguousDataStorage::WriteTo. Ключ является восьмибайтовым целым в том числе на платформах, на которых размер указателя не равен восьми байтам.
Реализация накопителя, которая поддерживает интерфейс IInMemoryDataStorage, также поддерживает интерфейс IInMemoryDataStorageInput, который доступен через использование метода IDataStorage::RepresentAs, вызываемого над this.
- См. также
IInMemoryDataStorageInput Интерфейс для чтения данных из накопителя, связанного с буфером в памяти. InMemoryDataStorageRef Ссылочный адаптер, определенный над интерфейсом IInMemoryDataStorage. InMemoryDataStorageOwn Адаптер с владением реализацией интерфейса IInMemoryDataStorage.