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


Класс CSharedFile

Замечание

Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.

Класс, производный от 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