Partilhar via


Classe CAtlFileMappingBase

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe representa um ficheiro mapeado em memória.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

class CAtlFileMappingBase

Membros

Construtores Públicos

Nome Description
CAtlFileMappingBase::CAtlFileMappingBase O construtor.
CAtlFileMappingBase::~CAtlFileMappingBase O destruidor.

Métodos Públicos

Nome Description
CAtlFileMappingBase::CopyFrom Chame este método para copiar a partir de um objeto de mapeamento de ficheiros.
CAtlFileMappingBase::GetData Chame este método para obter os dados de um objeto de mapeamento de ficheiros.
CAtlFileMappingBase::GetHandle Chame este método para devolver o handle do ficheiro.
CAtlFileMappingBase::GetMappingSize Chame este método para obter o tamanho do mapeamento a partir de um objeto de mapeamento de ficheiro.
CAtlFileMappingBase::MapFile Chame este método para criar um objeto de mapeamento de ficheiros.
CAtlFileMappingBase::MapSharedMem Chame este método para criar um objeto de mapeamento de ficheiros que permita acesso total a todos os processos.
CAtlFileMappingBase::OpenMapping Chame este método para devolver um handle ao objeto de mapeamento do ficheiro.
CAtlFileMappingBase::Unmap Chame este método para desmapear um objeto de mapeamento de ficheiros.

Operadores Públicos

Nome Description
CAtlFileMappingBase::operator = Define o objeto atual de mapeamento de ficheiros para outro objeto de mapeamento de ficheiros.

Observações

O mapeamento de ficheiros é a associação do conteúdo de um ficheiro com uma parte do espaço de endereçamento virtual de um processo. Esta classe fornece métodos para criar objetos de mapeamento de ficheiros que permitem aos programas aceder e partilhar dados facilmente.

Para mais informações, consulte Mapeamento de Ficheiros no SDK do Windows.

Requerimentos

Cabeçalho: atlfile.h

CAtlFileMappingBase::CAtlFileMappingBase

O construtor.

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

Parâmetros

orig
O objeto original de mapeamento do ficheiro para copiar e criar o novo objeto.

Observações

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

Example

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

Observações

Liberta quaisquer recursos alocados pela classe e chama o método CAtlFileMappingBase::Unmap .

CAtlFileMappingBase::CopyFrom

Chame este método para copiar a partir de um objeto de mapeamento de ficheiros.

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

Parâmetros

orig
O objeto original de mapeamento do ficheiro para copiar.

Valor de retorno

Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

CAtlFileMappingBase::GetData

Chame este método para obter os dados de um objeto de mapeamento de ficheiros.

void* GetData() const throw();

Valor de retorno

Devolve um ponteiro para os dados.

CAtlFileMappingBase::GetHandle

Chame este método para devolver um handle ao objeto de mapeamento do ficheiro.

HANDLE GetHandle() throw ();

Valor de retorno

Devolve um handle ao objeto de mapeamento do ficheiro.

CAtlFileMappingBase::GetMappingSize

Chame este método para obter o tamanho do mapeamento a partir de um objeto de mapeamento de ficheiro.

SIZE_T GetMappingSize() throw();

Valor de retorno

Devolve o tamanho do mapeamento.

Example

Veja o exemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapFile

Chame este método para abrir ou criar um objeto de mapeamento de ficheiros para o ficheiro 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
Handle para o ficheiro a partir do qual criar um objeto de mapeamento. hFile deve ser válido e não pode ser definido para INVALID_HANDLE_VALUE.

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

nDeslocamento
O deslocamento do ficheiro onde começa o mapeamento. O valor de deslocamento deve ser um múltiplo da granularidade da alocação de memória do sistema.

dwMappingProtection
A proteção desejada para a visualização do ficheiro quando o ficheiro é mapeado. Veja flProtect no CreateFileMapping no SDK do Windows.

dwViewDesiredAccess
Especifica o tipo de acesso à vista do ficheiro e, portanto, a proteção das páginas mapeadas pelo ficheiro. Veja dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

Depois de criado um objeto de mapeamento de ficheiro, o tamanho do ficheiro não deve exceder o tamanho do objeto de mapeamento de ficheiro; Se acontecer, nem todo o conteúdo do ficheiro estará disponível para partilha. Para mais detalhes, consulte CreateFileMapping e MapViewOfFileEx no SDK do Windows.

Example

Veja o exemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapSharedMem

Chame este método para criar um objeto de mapeamento de ficheiros que permita acesso total 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 ficheiros é igual ao tamanho atual do objeto de mapeamento identificado por szName.

szName
O nome do objeto de mapeamento.

pbAlAlready Existid
Aponta para um valor BOOL definido como TRUE se o objeto de mapeamento já existisse.

LPSA
O ponteiro para uma SECURITY_ATTRIBUTES estrutura que determina se o handle devolvido pode ser herdado por processos filhos. Veja lpAttributes no CreateFileMapping no SDK do Windows.

dwMappingProtection
A proteção desejada para a visualização do ficheiro, quando o ficheiro está mapeado. Veja o flProtect no CreateFileMapping SDK do Windows.

dwViewDesiredAccess
Especifica o tipo de acesso à vista do ficheiro e, portanto, a proteção das páginas mapeadas pelo ficheiro. Veja dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

MapShareMem permite que um objeto de mapeamento de ficheiros existente, criado pelo CreateFileMapping, seja partilhado entre processos.

CAtlFileMappingBase::OpenMapping

Chame este método para abrir um objeto de mapeamento de ficheiros nomeado para o ficheiro 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 existir um handle aberto para um objeto de mapeamento de ficheiros com este nome e o descritor de segurança no objeto de mapeamento não entrar em conflito com o parâmetro dwViewDesiredAccess , a operação de abertura tem sucesso.

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

nDeslocamento
O deslocamento do ficheiro onde começa o mapeamento. O valor de deslocamento deve ser um múltiplo da granularidade da alocação de memória do sistema.

dwViewDesiredAccess
Especifica o tipo de acesso à vista do ficheiro e, portanto, a proteção das páginas mapeadas pelo ficheiro. Veja dwDesiredAccess em MapViewOfFileEx no SDK do Windows.

Valor de retorno

Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

Em compilações de depuração, ocorrerá um erro de asserção se os parâmetros de entrada forem inválidos.

CAtlFileMappingBase::operator =

Define o objeto atual de mapeamento de ficheiros para outro objeto de mapeamento de ficheiros.

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

Parâmetros

orig
O objeto atual de mapeamento de ficheiros.

Valor de retorno

Devolve uma referência ao objeto atual.

CAtlFileMappingBase::Unmap

Chame este método para desmapear um objeto de mapeamento de ficheiros.

HRESULT Unmap() throw();

Valor de retorno

Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

Consulte UnmapViewOfFile no SDK do Windows para mais detalhes.

Consulte também

Classe CAtlFileMapping
Visão geral da classe