Compartir a través de


CAtlFileMappingBase (clase)

Esta clase representa un archivo asignado a la memoria.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class CAtlFileMappingBase

Miembros

Constructores públicos

Nombre Descripción
CAtlFileMappingBase::CAtlFileMappingBase Constructor .
CAtlFileMappingBase::~CAtlFileMappingBase El destructor .

Métodos públicos

Nombre Descripción
CAtlFileMappingBase::CopyFrom Llame a este método para copiar desde un objeto de asignación de archivos.
CAtlFileMappingBase::GetData Llame a este método para obtener los datos de un objeto de asignación de archivos.
CAtlFileMappingBase::GetHandle Llame a este método para devolver el identificador de archivos.
CAtlFileMappingBase::GetMappingSize Llame a este método para obtener el tamaño de asignación de un objeto de asignación de archivos.
CAtlFileMappingBase::MapFile Llame a este método para crear un objeto de asignación de archivos.
CAtlFileMappingBase::MapSharedMem Llame a este método para crear un objeto de asignación de archivos que permita el acceso total a todos los procesos.
CAtlFileMappingBase::OpenMapping Llame a este método para devolver un identificador al objeto de asignación de archivos.
CAtlFileMappingBase::Unmap Llame a este método para desasignar un objeto de asignación de archivos.

Operadores públicos

Nombre Descripción
CAtlFileMappingBase::operator = Establece el objeto de asignación de archivos actual en otro objeto de asignación de archivos.

Comentarios

La asignación de archivos es la asociación del contenido de un archivo con una parte del espacio de la dirección virtual de un proceso. Esta clase proporciona métodos para crear objetos de asignación de archivos que permiten a los programas acceder a datos y compartirlos fácilmente.

Para obtener más información, consulte Asignación de archivos en Windows SDK.

Requisitos

Encabezado: atlfile.h

CAtlFileMappingBase::CAtlFileMappingBase

Constructor .

CAtlFileMappingBase(CAtlFileMappingBase& orig);
CAtlFileMappingBase() throw();

Parámetros

orig
Objeto de asignación de archivos original que se va a copiar para crear el nuevo objeto.

Comentarios

Crea un nuevo objeto de asignación de archivos, opcionalmente mediante un objeto existente. Sigue siendo necesario llamar a CAtlFileMappingBase::MapFile para abrir o crear el objeto de asignación de archivos para un archivo determinado.

Ejemplo

int OpenMyFileMap()
{
   // Create the file-mapping object.
   CAtlFileMappingBase myFileMap;

   // Create a file.
   CAtlFile myFile;
   myFile.Create(_T("myMapTestFile"),
      GENERIC_READ|GENERIC_WRITE|STANDARD_RIGHTS_ALL,
      FILE_SHARE_READ|FILE_SHARE_WRITE,
      OPEN_ALWAYS);

   // The file handle.
   HANDLE hFile = (HANDLE)myFile;

   // Test the file has opened successfully.
   ATLASSERT(hFile != INVALID_HANDLE_VALUE);

   // Open the file for file-mapping.
   // Must give a size as the file is zero by default.
   if (myFileMap.MapFile(hFile,
      1024,
      0,
      PAGE_READWRITE,
      FILE_MAP_READ) != S_OK)
   {
      CloseHandle(hFile);
      return 0;
   }

   // Confirm the size of the mapping file.
   ATLASSERT(myFileMap.GetMappingSize() == 1024);

   // Now the file-mapping object is open, a second
   // process could access the filemap object to exchange
   // data.

   return 0;
}

CAtlFileMappingBase::~CAtlFileMappingBase

El destructor .

~CAtlFileMappingBase() throw();

Comentarios

Libera los recursos asignados por la clase y llama al método CAtlFileMappingBase::Unmap.

CAtlFileMappingBase::CopyFrom

Llame a este método para copiar desde un objeto de asignación de archivos.

HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();

Parámetros

orig
Objeto de asignación de archivos original desde el que se va a copiar.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

CAtlFileMappingBase::GetData

Llame a este método para obtener los datos de un objeto de asignación de archivos.

void* GetData() const throw();

Valor devuelto

Devuelve un puntero a los datos.

CAtlFileMappingBase::GetHandle

Llame a este método para devolver un identificador al objeto de asignación de archivos.

HANDLE GetHandle() throw ();

Valor devuelto

Devuelve un identificador al objeto de asignación de archivos.

CAtlFileMappingBase::GetMappingSize

Llame a este método para obtener el tamaño de asignación de un objeto de asignación de archivos.

SIZE_T GetMappingSize() throw();

Valor devuelto

Devuelve el tamaño de asignación.

Ejemplo

Consulte el ejemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapFile

Llame a este método para abrir o crear un objeto de asignación de archivos para el archivo especificado.

HRESULT MapFile(
    HANDLE hFile,
    SIZE_T nMappingSize = 0,
    ULONGLONG nOffset = 0,
    DWORD dwMappingProtection = PAGE_READONLY,
    DWORD dwViewDesiredAccess = FILE_MAP_READ) throw();

Parámetros

hFile
Identificador del archivo desde el que se va a crear un objeto de asignación. hFile debe ser válido y no se puede establecer en INVALID_HANDLE_VALUE.

nMappingSize
Tamaño de asignación. Si es 0, el tamaño máximo del objeto de asignación de archivos es igual al tamaño actual del archivo identificado por hFile.

nOffset
Desplazamiento del archivo en el que se va a iniciar la asignación. El valor de desplazamiento debe ser un múltiplo de la granularidad de asignación de memoria del sistema.

dwMappingProtection
Protección deseada para la vista del archivo cuando se asigna el archivo. Consulte flProtect en CreateFileMapping en Windows SDK.

dwViewDesiredAccess
Especifica el tipo de acceso a la vista del archivo y, por lo tanto, la protección de las páginas asignadas por el archivo. Consulte dwDesiredAccess en MapViewOfFileEx en Windows SDK.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Una vez creado un objeto de asignación de archivos, el tamaño del archivo no debe superar el tamaño del objeto de asignación de archivos; si es así, no todo el contenido del archivo estará disponible para compartirse. Para obtener más información, consulte CreateFileMapping y MapViewOfFileEx en Windows SDK.

Ejemplo

Consulte el ejemplo de CAtlFileMappingBase::CAtlFileMappingBase.

CAtlFileMappingBase::MapSharedMem

Llame a este método para crear un objeto de asignación de archivos que permita el acceso total a todos los procesos.

HRESULT MapSharedMem(
    SIZE_T nMappingSize,
    LPCTSTR szName,
    BOOL* pbAlreadyExisted = NULL,
    LPSECURITY_ATTRIBUTES lpsa = NULL,
    DWORD dwMappingProtection = PAGE_READWRITE,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Parámetros

nMappingSize
Tamaño de asignación. Si es 0, el tamaño máximo del objeto de asignación de archivos es igual al tamaño actual del objeto de asignación de archivos identificado por szName.

szName
Nombre del objeto de asignación.

pbAlreadyExisted
Apunta a un valor BOOL que se establece en TRUE si el objeto de asignación ya existía.

lpsa
Puntero a una estructura de SECURITY_ATTRIBUTES que determina si el identificador devuelto se puede heredar de procesos secundarios. Consulte lpAttributes en CreateFileMapping en Windows SDK.

dwMappingProtection
Protección deseada para la vista del archivo, cuando se asigna el archivo. Consulte flProtect en CreateFileMapping en Windows SDK.

dwViewDesiredAccess
Especifica el tipo de acceso a la vista del archivo y, por lo tanto, la protección de las páginas asignadas por el archivo. Consulte dwDesiredAccess en MapViewOfFileEx en Windows SDK.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

MapShareMem permite compartir un objeto de asignación de archivos existente, creado por CreateFileMapping, entre procesos.

CAtlFileMappingBase::OpenMapping

Llame a este método para abrir un objeto de asignación de archivos con nombre para el archivo especificado.

HRESULT OpenMapping(
    LPCTSTR szName,
    SIZE_T nMappingSize,
    ULONGLONG nOffset = 0,
    DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();

Parámetros

szName
Nombre del objeto de asignación. Si hay un identificador abierto de un objeto de asignación de archivos por este nombre y el descriptor de seguridad del objeto de asignación no entra en conflicto con el parámetro dwViewDesiredAccess, la operación de apertura se realiza correctamente.

nMappingSize
Tamaño de asignación. Si es 0, el tamaño máximo del objeto de asignación de archivos es igual al tamaño actual del objeto de asignación de archivos identificado por szName.

nOffset
Desplazamiento del archivo en el que se va a iniciar la asignación. El valor de desplazamiento debe ser un múltiplo de la granularidad de asignación de memoria del sistema.

dwViewDesiredAccess
Especifica el tipo de acceso a la vista del archivo y, por lo tanto, la protección de las páginas asignadas por el archivo. Consulte dwDesiredAccess en MapViewOfFileEx en Windows SDK.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si los parámetros de entrada no son válidos.

CAtlFileMappingBase::operator =

Establece el objeto de asignación de archivos actual en otro objeto de asignación de archivos.

CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);

Parámetros

orig
Objeto de asignación de archivos actual.

Valor devuelto

Devuelve una referencia al objeto actual.

CAtlFileMappingBase::Unmap

Llame a este método para desasignar un objeto de asignación de archivos.

HRESULT Unmap() throw();

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Consulte UnmapViewOfFile en Windows SDK para obtener más detalles.

Consulte también

CAtlFileMapping (clase)
Información general sobre la clase