Compartilhar via


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

CObject

CFile

CMemFile

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.

Confira também

Classe CMemFile
Gráfico da hierarquia
Classe CMemFile