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.