Classe CSharedFile
A classe derivada de CMemFile que dá suporte a arquivos de memória compartilhados.
Sintaxe
class CSharedFile : public CMemFile
Membros
Construtores públicos
Nome | Descrição |
---|---|
CSharedFile::CSharedFile | Constrói um objeto CSharedFile . |
Métodos públicos
Nome | Descrição |
---|---|
CSharedFile::Detach | Fecha o arquivo de memória compartilhada e retorna o identificador do bloco de memória. |
CSharedFile::SetHandle | Anexa o arquivo de memória compartilhada a um bloco de memória. |
Comentários
Arquivos de memória se comportam como arquivos de disco. A diferença é que um arquivo de memória é armazenado em RAM em vez de em disco. Um arquivo de memória é útil para o armazenamento temporário rápido ou para transferir bytes brutos ou objetos serializados entre processos independentes.
Os arquivos de memória compartilhada diferem de outros arquivos de memória porque a memória para eles é alocada usando a função do Windows GlobalAlloc. A classe CSharedFile
armazena dados em um bloco de memória alocado globalmente (criado usando GlobalAlloc
), e esse bloco de memória pode ser compartilhado usando DDE, a área de transferência ou outras operações de transferência de dados uniforme OLE/COM, por exemplo, usando IDataObject
.
GlobalAlloc
retorna um identificador HGLOBAL em vez de um ponteiro para a memória, como o ponteiro retornado por malloc. O identificador HGLOBAL é necessário em determinados aplicativos. Por exemplo, para colocar dados na Área de Transferência, você precisa de um identificador HGLOBAL.
CSharedFile
não usa arquivos mapeados em memória, e os dados não podem ser compartilhados diretamente entre processos.
Os objetos CSharedFile
podem alocar automaticamente sua própria memória. Ou você pode anexar seu próprio bloco de memória ao objeto CSharedFile
chamando CSharedFile::SetHandle. Em ambos os casos, a memória para aumentar o arquivo de memória automaticamente é alocada em incrementos dimensionados para nGrowBytes
se nGrowBytes
não for zero.
Para obter mais informações, confira os artigos Arquivos no MFC e Tratamento de arquivos na Referência da Biblioteca de Runtime.
Hierarquia de herança
CSharedFile
Requisitos
Cabeçalho: afxadv.h
CSharedFile::CSharedFile
Constrói um objeto CSharedFile
e aloca memória para ele.
CSharedFile(
UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
UINT nGrowBytes = 4096);
Parâmetros
nAllocFlags
Sinalizadores que indicam como a memória deve ser alocada. Consulte GlobalAlloc para uma lista de valores de sinalizador válidos.
nGrowBytes
O incremento de alocação de memória em bytes.
CSharedFile::Detach
Chame essa função para fechar o arquivo de memória e desanexá-lo do bloco de memória.
HGLOBAL Detach();
Valor de retorno
O identificador para o bloco de memória onde está o conteúdo do arquivo de memória.
Comentários
Você pode reabri-lo chamando SetHandle, usando o identificador retornado por Detach.
CSharedFile::SetHandle
Chame essa função para anexar um bloco de memória global ao objeto CSharedFile
.
void SetHandle(
HGLOBAL hGlobalMemory,
BOOL bAllowGrow = TRUE);
Parâmetros
hGlobalMemory
Identificador da memória global a ser anexada ao CSharedFile
.
bAllowGrow
Especifica se o bloco de memória tem permissão para crescer.
Comentários
Se bAllowGrow não for zero, o tamanho do bloco de memória será aumentado conforme necessário, por exemplo, se você tentar gravar mais bytes no arquivo do que o tamanho do bloco de memória.