Partilhar via


Classe CSharedFile

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

A classe derivada do CMemFile que suporta ficheiros de memória partilhada.

Sintaxe

class CSharedFile : public CMemFile

Membros

Construtores Públicos

Nome Description
CSharedFile::CSharedFile Constrói um CSharedFile objeto.

Métodos Públicos

Nome Description
CSharedFile::D etach Fecha o ficheiro de memória partilhada e devolve o handle do seu bloco de memória.
CSharedFile::SetHandle Anexa o ficheiro de memória partilhada a um bloco de memória.

Observações

Os ficheiros de memória comportam-se como ficheiros de disco. A diferença é que um ficheiro de memória é armazenado na RAM em vez de no disco. Um ficheiro de memória é útil para armazenamento temporário rápido, ou para transferir bytes brutos ou objetos serializados entre processos independentes.

Os ficheiros de memória partilhada diferem de outros ficheiros de memória porque a memória para eles é alocada com a função GlobalAlloc para Windows. A CSharedFile classe armazena dados num bloco de memória globalmente alocado (criado usando GlobalAlloc), e este bloco de memória pode ser partilhado usando DDE, o Clipboard ou outras operações uniformes de transferência de dados OLE/COM, por exemplo, usando IDataObject.

GlobalAlloc devolve um handle HGLOBAL em vez de um pointer para a memória, como o pointer devolvido pelo malloc. O handle HGLOBAL é necessário em certas aplicações. Por exemplo, para colocar dados no Clipboard precisas de um handle HGLOBAL.

CSharedFile não utiliza ficheiros mapeados em memória, e os dados não podem ser partilhados diretamente entre processos.

CSharedFile os objetos podem alocar automaticamente a sua própria memória. Ou pode anexar o seu próprio bloco de memória ao CSharedFile objeto chamando CSharedFile::SetHandle. Em qualquer dos casos, a memória para o crescimento do ficheiro de memória é automaticamente alocada em nGrowBytesincrementos de tamanho -se nGrowBytes não for zero.

Para mais informações, consulte o artigo Ficheiros em MFC e Gestão de Ficheiros na Run-Time Library Reference.

Hierarquia de herança

CObject

CFile

CMemFile

CSharedFile

Requerimentos

Cabeçalho: afxadv.h

CSharedFile::CSharedFile

Constrói um CSharedFile objeto e aloca memória para ele.

CSharedFile(
    UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
    UINT nGrowBytes = 4096);

Parâmetros

nAllocFlags
Bandeiras que indicam como a memória deve ser alocada. Consulte GlobalAlloc para uma lista de valores de flag válidos.

nGrowBytes
O incremento de alocação de memória em bytes.

CSharedFile::D etach

Chama esta função para fechar o ficheiro de memória e separá-lo do bloco de memória.

HGLOBAL Detach();

Valor de retorno

A alavanca do bloco de memória que contém o conteúdo do ficheiro de memória.

Observações

Podes reabri-lo chamando o SetHandle, usando o handle devolvido pelo Detach.

CSharedFile::SetHandle

Chame esta função para anexar um bloco de memória global ao CSharedFile objeto.

void SetHandle(
    HGLOBAL hGlobalMemory,
    BOOL bAllowGrow = TRUE);

Parâmetros

hGlobalMemory
Handle para a memória global a ser ligada ao CSharedFile.

bAllowGrow
Especifica se o bloco de memória pode crescer.

Observações

Se o bAllowGrow for diferente de zero, o tamanho do bloco de memória é aumentado conforme necessário, por exemplo, se tentar escrever mais bytes no ficheiro do que o tamanho do bloco de memória.

Consulte também

Classe CMemFile
Gráfico de Hierarquia
Classe CMemFile