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
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.