Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов 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 и обработке файлов" в справочнике по библиотеке времени выполнения.
Иерархия наследования
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 ненулевое значение, размер блока памяти увеличивается при необходимости, например при попытке записать больше байтов в файл, чем размер блока памяти.