Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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.