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


Класс CAtlFileMappingBase

Этот класс представляет сопоставленный с памятью файл.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CAtlFileMappingBase

Участники

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

Имя Описание
CAtlFileMappingBase::CAtlFileMappingBase Конструктор.
CAtlFileMappingBase::~CAtlFileMappingBase Деструктор

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

Имя Описание
CAtlFileMappingBase::CopyFrom Вызовите этот метод для копирования из объекта сопоставления файлов.
CAtlFileMappingBase::GetData Вызовите этот метод, чтобы получить данные из объекта сопоставления файлов.
CAtlFileMappingBase::GetHandle Вызовите этот метод, чтобы вернуть дескриптор файла.
CAtlFileMappingBase::GetMappingSize Вызовите этот метод, чтобы получить размер сопоставления из объекта сопоставления файлов.
CAtlFileMappingBase::MapFile Вызовите этот метод для создания объекта сопоставления файлов.
CAtlFileMappingBase::MapSharedMem Вызовите этот метод, чтобы создать объект сопоставления файлов, который позволяет получить полный доступ ко всем процессам.
CAtlFileMappingBase::OpenMapping Вызовите этот метод, чтобы вернуть дескриптор объекту сопоставления файлов.
CAtlFileMappingBase::Unmap Вызовите этот метод, чтобы отменить сопоставление объекта сопоставления файлов.

Открытые операторы

Имя Описание
CAtlFileMappingBase::operator = Задает текущий объект сопоставления файлов другим объектом сопоставления файлов.

Замечания

Сопоставление файлов — это связь содержимого файла с частью виртуального адресного пространства процесса. Этот класс предоставляет методы для создания объектов сопоставления файлов, позволяющих программам легко получать доступ к данным и предоставлять общий доступ к ним.

Дополнительные сведения см. в разделе "Сопоставление файлов" в пакете SDK для Windows.

Требования

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

CAtlFileMappingBase::CAtlFileMappingBase

Конструктор.

CAtlFileMappingBase(CAtlFileMappingBase& orig);
CAtlFileMappingBase() throw();

Параметры

Orig
Исходный объект сопоставления файлов для копирования для создания нового объекта.

Замечания

Создает новый объект сопоставления файлов, при необходимости используя существующий объект. Для открытия или создания объекта сопоставления файлов для определенного файла необходимо вызвать CAtlFileMappingBase::MapFile .

Пример

int OpenMyFileMap()
{
   // Create the file-mapping object.
   CAtlFileMappingBase myFileMap;

   // Create a file.
   CAtlFile myFile;
   myFile.Create(_T("myMapTestFile"),
      GENERIC_READ|GENERIC_WRITE|STANDARD_RIGHTS_ALL,
      FILE_SHARE_READ|FILE_SHARE_WRITE,
      OPEN_ALWAYS);

   // The file handle.
   HANDLE hFile = (HANDLE)myFile;

   // Test the file has opened successfully.
   ATLASSERT(hFile != INVALID_HANDLE_VALUE);

   // Open the file for file-mapping.
   // Must give a size as the file is zero by default.
   if (myFileMap.MapFile(hFile,
      1024,
      0,
      PAGE_READWRITE,
      FILE_MAP_READ) != S_OK)
   {
      CloseHandle(hFile);
      return 0;
   }

   // Confirm the size of the mapping file.
   ATLASSERT(myFileMap.GetMappingSize() == 1024);

   // Now the file-mapping object is open, a second
   // process could access the filemap object to exchange
   // data.

   return 0;
}

CAtlFileMappingBase::~CAtlFileMappingBase

Деструктор

~CAtlFileMappingBase() throw();

Замечания

Освобождает все ресурсы, выделенные классом , и вызывает метод CAtlFileMappingBase::Unmap .

CAtlFileMappingBase::CopyFrom

Вызовите этот метод для копирования из объекта сопоставления файлов.

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

Параметры

Orig
Исходный объект сопоставления файлов для копирования.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

CAtlFileMappingBase::GetData

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

void* GetData() const throw();

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

Возвращает указатель на данные.

CAtlFileMappingBase::GetHandle

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

HANDLE GetHandle() throw ();

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

Возвращает дескриптор объекта сопоставления файлов.

CAtlFileMappingBase::GetMappingSize

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

SIZE_T GetMappingSize() throw();

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

Возвращает размер сопоставления.

Пример

См. пример CAtlFileMappingBase ::CAtlFileMappingBase.

CAtlFileMappingBase::MapFile

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

HRESULT MapFile(
    HANDLE hFile,
    SIZE_T nMappingSize = 0,
    ULONGLONG nOffset = 0,
    DWORD dwMappingProtection = PAGE_READONLY,
    DWORD dwViewDesiredAccess = FILE_MAP_READ) throw();

Параметры

hFile
Обработайте файл, из которого создается объект сопоставления. hFile должен быть допустимым и не может быть задан INVALID_HANDLE_VALUE.

nMappingSize
Размер сопоставления. Если значение равно 0, максимальный размер объекта сопоставления файлов равен текущему размеру файла, определяемого hFile.

nOffset
Смещение файла, в котором начинается сопоставление. Значение смещения должно быть несколькими из детализации распределения памяти системы.

dwMappingProtection
Защита, требуемая для представления файлов при сопоставлении файла. См . статью flProtect в CreateFileMapping в пакете SDK для Windows.

dwViewDesiredAccess
Указывает тип доступа к представлению файлов и, следовательно, защиту страниц, сопоставленных файлом. См . dwDesiredAccess в MapViewOfFileEx в пакете SDK для Windows.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

После создания объекта сопоставления файлов размер файла не должен превышать размер объекта сопоставления файлов; Если это так, не все содержимое файла будет доступно для общего доступа. Дополнительные сведения см. в статье CreateFileMapping и MapViewOfFileEx в пакете SDK для Windows.

Пример

См. пример CAtlFileMappingBase ::CAtlFileMappingBase.

CAtlFileMappingBase::MapSharedMem

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

HRESULT MapSharedMem(
    SIZE_T nMappingSize,
    LPCTSTR szName,
    BOOL* pbAlreadyExisted = NULL,
    LPSECURITY_ATTRIBUTES lpsa = NULL,
    DWORD dwMappingProtection = PAGE_READWRITE,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Параметры

nMappingSize
Размер сопоставления. Если значение равно 0, максимальный размер объекта сопоставления файлов равен текущему размеру объекта сопоставления файлов, определяемого именем szName.

szName
Имя объекта сопоставления.

pbAlreadyExisted
Указывает на значение BOOL, которое имеет значение TRUE, если объект сопоставления уже существует.

lpsa
Указатель на SECURITY_ATTRIBUTES структуру, которая определяет, может ли возвращаемый дескриптор наследоваться дочерними процессами. См . сведения о lpAttributes в CreateFileMapping в пакете SDK для Windows.

dwMappingProtection
Защита, требуемая для представления файлов, при сопоставлении файла. См . статью flProtect в CreateFileMapping пакете SDK для Windows.

dwViewDesiredAccess
Указывает тип доступа к представлению файлов и, следовательно, защиту страниц, сопоставленных файлом. См . dwDesiredAccess в MapViewOfFileEx в пакете SDK для Windows.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

MapShareMem позволяет существующему объекту сопоставления файлов, созданному CreateFileMapping, предоставлять общий доступ между процессами.

CAtlFileMappingBase::OpenMapping

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

HRESULT OpenMapping(
    LPCTSTR szName,
    SIZE_T nMappingSize,
    ULONGLONG nOffset = 0,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Параметры

szName
Имя объекта сопоставления. Если у объекта сопоставления файлов есть открытый дескриптор по этому имени, а дескриптор безопасности для объекта сопоставления не конфликтует с параметром dwViewDesiredAccess , открытая операция завершается успешно.

nMappingSize
Размер сопоставления. Если значение равно 0, максимальный размер объекта сопоставления файлов равен текущему размеру объекта сопоставления файлов, определяемого именем szName.

nOffset
Смещение файла, в котором начинается сопоставление. Значение смещения должно быть несколькими из детализации распределения памяти системы.

dwViewDesiredAccess
Указывает тип доступа к представлению файлов и, следовательно, защиту страниц, сопоставленных файлом. См . dwDesiredAccess в MapViewOfFileEx в пакете SDK для Windows.

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

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

CAtlFileMappingBase::operator =

Задает текущий объект сопоставления файлов другим объектом сопоставления файлов.

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

Параметры

Orig
Текущий объект сопоставления файлов.

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

Возвращает ссылку на текущий объект .

CAtlFileMappingBase::Unmap

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

HRESULT Unmap() throw();

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

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Дополнительные сведения см. в разделе UnmapViewOfFile в пакете SDK для Windows.

См. также

Класс CAtlFileMapping
Общие сведения о классе