Поделиться через


Класс CSharedFile

Класс, производный от CMemFile, который поддерживает общие файлы памяти.

Синтаксис

class CSharedFile : public CMemFile

Участники

Открытые конструкторы

Имя Описание
CSharedFile::CSharedFile Формирует объект CSharedFile.

Открытые методы

Имя Описание
CSharedFile::D etach Закрывает файл общей памяти и возвращает дескриптор своего блока памяти.
CSharedFile::SetHandle Присоединяет общий файл памяти к блоку памяти.

Замечания

Файлы памяти ведут себя как файлы диска. Разница заключается в том, что файл памяти хранится в ОЗУ, а не на диске. Файл памяти полезен для быстрого временного хранения или передачи необработанных байтов или сериализованных объектов между независимыми процессами.

Файлы общей памяти отличаются от других файлов памяти в этой памяти, выделенных функцией GlobalAlloc Windows. Класс CSharedFile хранит данные в глобально выделенном блоке памяти (созданном с помощью GlobalAlloc), и этот блок памяти можно совместно использовать с помощью DDE, буфера обмена или других операций передачи данных OLE/COM, например с помощью IDataObject.

GlobalAlloc возвращает дескриптор HGLOBAL, а не указатель на память, например указатель, возвращаемый malloc. В некоторых приложениях требуется дескриптор HGLOBAL. Например, чтобы поместить данные в буфер обмена, требуется дескриптор HGLOBAL.

CSharedFile не использует сопоставленные с памятью файлы, и данные нельзя напрямую совместно использовать между процессами.

CSharedFile Объекты могут автоматически выделять собственную память. Кроме того, вы можете подключить собственный блок памяти к объекту CSharedFile , вызвав CSharedFile::SetHandle. В любом случае память для увеличения файла памяти автоматически выделяется в nGrowBytesразмерах приращения, если nGrowBytes не равно нулю.

Дополнительные сведения см. в статье "Файлы в MFC и обработке файлов" в справочнике по библиотеке времени выполнения.

Иерархия наследования

CObject

Cfile

Cmemfile

CSharedFile

Требования

Заголовок: afxadv.h

CSharedFile::CSharedFile

CSharedFile Создает объект и выделяет для него память.

CSharedFile(
    UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
    UINT nGrowBytes = 4096);

Параметры

nAllocFlags
Флаги, указывающие, как выделяется память. Список допустимых значений флагов см. в разделе GlobalAlloc .

nGrowBytes
Увеличение выделения памяти в байтах.

CSharedFile::D etach

Вызовите эту функцию, чтобы закрыть файл памяти и отключить его от блока памяти.

HGLOBAL Detach();

Возвращаемое значение

Дескриптор блока памяти, содержащий содержимое файла памяти.

Замечания

Его можно повторно открыть, вызвав SetHandle, используя дескриптор, возвращенный отсоединение.

CSharedFile::SetHandle

Вызовите эту функцию, чтобы подключить блок глобальной памяти к объекту CSharedFile .

void SetHandle(
    HGLOBAL hGlobalMemory,
    BOOL bAllowGrow = TRUE);

Параметры

hGlobalMemory
Дескриптор к глобальной памяти, к которому необходимо подключиться CSharedFile.

bAllowGrow
Указывает, разрешено ли увеличивать блок памяти.

Замечания

Если bAllowGrow ненулевое значение, размер блока памяти увеличивается при необходимости, например при попытке записать больше байтов в файл, чем размер блока памяти.

См. также

Класс CMemFile
Диаграмма иерархии
Класс CMemFile