Класс 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 и обработке файлов" в справочнике по библиотеке времени выполнения.
Иерархия наследования
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 ненулевое значение, размер блока памяти увеличивается при необходимости, например при попытке записать больше байтов в файл, чем размер блока памяти.