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.