Compartilhar via


Classe CAtlFileMappingBase

Essa classe representa um arquivo mapeado em memória.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CAtlFileMappingBase

Membros

Construtores públicos

Nome Descrição
CAtlFileMappingBase::CAtlFileMappingBase O construtor .
CAtlFileMappingBase::~CAtlFileMappingBase O destruidor.

Métodos públicos

Nome Descrição
CAtlFileMappingBase::CopyFrom Chame esse método para copiar de um objeto de mapeamento de arquivo.
CAtlFileMappingBase::GetData Chame esse método para obter os dados de um objeto de mapeamento de arquivo.
CAtlFileMappingBase::GetHandle Chame esse método para retornar o identificador de arquivo.
CAtlFileMappingBase::GetMappingSize Chame esse método para obter o tamanho de mapeamento de um objeto de mapeamento de arquivo.
CAtlFileMappingBase::MapFile Chame esse método para criar um objeto de mapeamento de arquivo.
CAtlFileMappingBase::MapSharedMem Chame esse método para criar um objeto de mapeamento de arquivo que permita acesso completo a todos os processos.
CAtlFileMappingBase::OpenMapping Chame esse método para retornar um identificador para o objeto de mapeamento de arquivo.
CAtlFileMappingBase::Unmap Chame esse método para desmapear um objeto de mapeamento de arquivo.

Operadores públicos

Nome Descrição
CAtlFileMappingBase::operator = Define o objeto de mapeamento de arquivo atual como outro objeto de mapeamento de arquivo.

Comentários

O mapeamento de arquivo é a associação do conteúdo de um arquivo com uma parte do espaço de endereço virtual de um processo. Essa classe fornece métodos para criar objetos de mapeamento de arquivos que permitem que programas acessem e compartilhem dados com facilidade.

Para obter mais informações, confira Mapeamento de Arquivos no SDK do Windows.

Requisitos

Cabeçalho: atlfile.h

CAtlFileMappingBase::CAtlFileMappingBase

O construtor .

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

Parâmetros

orig
O objeto de mapeamento de arquivo original a ser copiado para criar o objeto.

Comentários

Cria um objeto de mapeamento de arquivo, opcionalmente usando um objeto existente. Ainda é necessário chamar CAtlFileMappingBase::MapFile para abrir ou criar o objeto de mapeamento de arquivo para um arquivo específico.

Exemplo

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

O destruidor.

~CAtlFileMappingBase() throw();

Comentários

Libera todos os recursos alocados pela classe e chama o método CAtlFileMappingBase::Unmap.

CAtlFileMappingBase::CopyFrom

Chame esse método para copiar de um objeto de mapeamento de arquivo.

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

Parâmetros

orig
O objeto de mapeamento de arquivo original do qual copiar.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

CAtlFileMappingBase::GetData

Chame esse método para obter os dados de um objeto de mapeamento de arquivo.

void* GetData() const throw();

Valor de retorno

Retorna um ponteiro para os dados.

CAtlFileMappingBase::GetHandle

Chame esse método para retornar um identificador para o objeto de mapeamento de arquivo.

HANDLE GetHandle() throw ();

Valor de retorno

Retorna um identificador para o objeto de mapeamento de arquivo.

CAtlFileMappingBase::GetMappingSize

Chame esse método para obter o tamanho de mapeamento de um objeto de mapeamento de arquivo.

SIZE_T GetMappingSize() throw();

Valor de retorno

Retorna o tamanho de mapeamento.

Exemplo

Consulte o exemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapFile

Chame esse método para abrir ou criar um objeto de mapeamento de arquivo para o arquivo especificado.

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

Parâmetros

hFile
Manipule para o arquivo do qual criar um objeto de mapeamento. hFile deve ser válido e não pode ser definido como INVALID_HANDLE_VALUE.

nMappingSize
O tamanho do mapeamento. Se 0, o tamanho máximo do objeto de mapeamento de arquivo será igual ao tamanho atual do arquivo identificado por hFile.

nOffset
O deslocamento do arquivo em que o mapeamento deve começar. O valor de deslocamento deve ser um múltiplo da granularidade de alocação de memória do sistema.

dwMappingProtection
A proteção desejada para a exibição de arquivo quando o arquivo é mapeado. Consulte flProtect em CreateFileMapping no SDK do Windows.

dwViewDesiredAccess
Especifica o tipo de acesso ao modo de exibição de arquivo e, portanto, a proteção das páginas mapeadas pelo arquivo. Confira dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Depois que um objeto de mapeamento de arquivo tiver sido criado, o tamanho do arquivo não deve exceder o tamanho do objeto de mapeamento de arquivo. Se isso acontecer, nem todo o conteúdo do arquivo estará disponível para compartilhamento. Para obter mais detalhes, confira CreateFileMapping e MapViewOfFileEx no SDK do Windows.

Exemplo

Consulte o exemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapSharedMem

Chame esse método para criar um objeto de mapeamento de arquivo que permita acesso completo a todos os processos.

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();

Parâmetros

nMappingSize
O tamanho do mapeamento. Se 0, o tamanho máximo do objeto de mapeamento de arquivo será igual ao tamanho atual do objeto de mapeamento do arquivo identificado por szName.

szName
O nome do objeto de mapeamento.

pbAlreadyExisted
Apontará para um valor BOOL definido como TRUE se o objeto de mapeamento já existir.

lpsa
O ponteiro para uma estrutura SECURITY_ATTRIBUTES que determina se o identificador retornado pode ser herdado por processos filhos. Confira lpAttributes em CreateFileMapping no SDK do Windows.

dwMappingProtection
A proteção desejada para a exibição de arquivo quando o arquivo é mapeado. Confira flProtect em CreateFileMapping no SDK do Windows.

dwViewDesiredAccess
Especifica o tipo de acesso ao modo de exibição de arquivo e, portanto, a proteção das páginas mapeadas pelo arquivo. Confira dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

MapShareMem permite que um objeto de mapeamento de arquivo existente, criado por CreateFileMapping, seja compartilhado entre processos.

CAtlFileMappingBase::OpenMapping

Chame esse método para abrir um objeto de mapeamento de arquivo nomeado para o arquivo especificado.

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

Parâmetros

szName
O nome do objeto de mapeamento. Se houver um identificador aberto para um objeto de mapeamento de arquivo por esse nome e o descritor de segurança no objeto de mapeamento não entrar em conflito com o parâmetro dwViewDesiredAccess, a operação aberta terá êxito.

nMappingSize
O tamanho do mapeamento. Se 0, o tamanho máximo do objeto de mapeamento de arquivo será igual ao tamanho atual do objeto de mapeamento do arquivo identificado por szName.

nOffset
O deslocamento do arquivo em que o mapeamento deve começar. O valor de deslocamento deve ser um múltiplo da granularidade de alocação de memória do sistema.

dwViewDesiredAccess
Especifica o tipo de acesso ao modo de exibição de arquivo e, portanto, a proteção das páginas mapeadas pelo arquivo. Confira dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Em builds de depuração, ocorrerá um erro de declaração se os parâmetros de entrada forem inválidos.

CAtlFileMappingBase::operator =

Define o objeto de mapeamento de arquivo atual como outro objeto de mapeamento de arquivo.

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

Parâmetros

orig
O objeto de mapeamento de arquivo atual.

Valor de retorno

Retorna uma referência ao objeto atual.

CAtlFileMappingBase::Unmap

Chame esse método para desmapear um objeto de mapeamento de arquivo.

HRESULT Unmap() throw();

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Consulte UnmapViewOfFile no SDK do Windows para obter mais detalhes.

Confira também

Classe CAtlFileMapping
Visão geral da aula