Compartir a través de


CSharedFile (clase)

Clase derivada de CMemFile que admite archivos de memoria compartidos.

Sintaxis

class CSharedFile : public CMemFile

Miembros

Constructores públicos

Nombre Descripción
CSharedFile::CSharedFile Construye un objeto CSharedFile.

Métodos públicos

Nombre Descripción
CSharedFile::Detach Se usa para cerrar el archivo de memoria compartida y devuelve el id. del bloque de memoria.
CSharedFile::SetHandle Se usa para adjuntar un archivo de memoria compartida a un bloque de memoria.

Comentarios

El comportamiento de los archivos de memoria es muy similar al de los archivos de disco. La diferencia radica en que un archivo de memoria se almacena en RAM y no en el disco. Un archivo de memoria se puede usar para un almacenamiento temporal rápido o para transferir bytes sin procesar o objetos serializados entre procesos independientes.

La diferencia entre los archivos de memoria compartida y otros archivos de memoria es que en los primeros la memoria se asigna a la función de Windows GlobalAlloc. La clase CSharedFile almacena datos en un bloque de memoria asignado globalmente, que se crea mediante GlobalAlloc, y este bloque de memoria puede compartirse por medio de DDE, el Portapapeles u otras operaciones de transferencia uniforme de datos OLE/COM, por ejemplo, mediante IDataObject.

El valor GlobalAlloc devuelve un identificador HGLOBAL en vez de un puntero que apunta a la memoria, como un puntero devuelto por malloc. El identificador HGLOBAL es necesario para el funcionamiento de determinadas aplicaciones. Por ejemplo, HGLOBAL se emplea para colocar datos en el Portapapeles.

CSharedFile no usa archivos asignados a la memoria y no es posible compartir los datos directamente entre procesos.

Los objetos CSharedFile pueden asignar automáticamente su propia memoria. También puede adjuntar su propio bloque de memoria al objeto CSharedFile mediante una llamada a CSharedFile::SetHandle. En cualquier caso, la memoria usada para aumentar automáticamente el tamaño del archivo de memoria se asigna en incrementos de un tamaño de nGrowBytes si nGrowBytes es distinto de 0.

Para obtener más información vea los artículos Archivos en MFC y Control de archivos en la Referencia de la biblioteca en tiempo de ejecución.

Jerarquía de herencia

CObject

CFile

CMemFile

CSharedFile

Requisitos

Encabezado: afxadv.h

CSharedFile::CSharedFile

Se usa para construir un objeto CSharedFile y asignarle memoria.

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

Parámetros

nAllocFlags
Marcas que indican cómo se asigna la memoria. Consulte GlobalAlloc para ver una lista de valores de marca válidos.

nGrowBytes
Incremento de asignación de memoria expresado en bytes.

CSharedFile::Detach

Llame a esta función si quiere cerrar el archivo de memoria y desasociarlo del bloque de memoria.

HGLOBAL Detach();

Valor devuelto

Identificador del bloque de memoria con el contenido del archivo de memoria.

Comentarios

Para volver a abrirlo, llame a SetHandle mediante el identificador que devuelve Detach.

CSharedFile::SetHandle

Llame a esta función para adjuntar un bloque de memoria global al objeto CSharedFile.

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

Parámetros

hGlobalMemory
Se usa para controlar la memoria global que se adjunta a CSharedFile.

bAllowGrow
Se usar para especificar si el bloque de memoria puede aumentar.

Comentarios

Si bAllowGrow tiene un valor distinto a cero, se aumenta el tamaño del bloque de memoria según sea necesario, por ejemplo, si se intenta escribir más bytes en archivo que el tamaño del bloque de memoria.

Consulte también

CMemFile (clase)
Gráfico de jerarquías
CMemFile (clase)