Classe CAtlFileMappingBase
Questa classe rappresenta un file mappato alla memoria.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
class CAtlFileMappingBase
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CAtlFileMappingBase::CAtlFileMappingBase | Costruttore. |
CAtlFileMappingBase::~CAtlFileMappingBase | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CAtlFileMappingBase::CopyFrom | Chiamare questo metodo per copiare da un oggetto di mapping di file. |
CAtlFileMappingBase::GetData | Chiamare questo metodo per ottenere i dati da un oggetto di mapping di file. |
CAtlFileMappingBase::GetHandle | Chiamare questo metodo per restituire l'handle di file. |
CAtlFileMappingBase::GetMappingSize | Chiamare questo metodo per ottenere le dimensioni del mapping da un oggetto di mapping di file. |
CAtlFileMappingBase::MapFile | Chiamare questo metodo per creare un oggetto di mapping di file. |
CAtlFileMappingBase::MapSharedMem | Chiamare questo metodo per creare un oggetto di mapping di file che consenta l'accesso completo a tutti i processi. |
CAtlFileMappingBase::OpenMapping | Chiamare questo metodo per restituire un handle all'oggetto di mapping file. |
CAtlFileMappingBase::Unmap | Chiamare questo metodo per rimuovere il mapping di un oggetto di mapping di file. |
Operatori pubblici
Nome | Descrizione |
---|---|
CAtlFileMappingBase::operator = | Imposta l'oggetto di mapping file corrente su un altro oggetto di mapping di file. |
Osservazioni:
Il mapping dei file è l'associazione del contenuto di un file con una parte dello spazio indirizzi virtuale di un processo. Questa classe fornisce metodi per la creazione di oggetti di mapping di file che consentono ai programmi di accedere e condividere facilmente i dati.
Per altre informazioni, vedere Mapping di file in Windows SDK.
Requisiti
Intestazione: atlfile.h
CAtlFileMappingBase::CAtlFileMappingBase
Costruttore.
CAtlFileMappingBase(CAtlFileMappingBase& orig);
CAtlFileMappingBase() throw();
Parametri
orig
Oggetto di mapping file originale da copiare per creare il nuovo oggetto.
Osservazioni:
Crea un nuovo oggetto di mapping di file, facoltativamente usando un oggetto esistente. È comunque necessario chiamare CAtlFileMappingBase::MapFile per aprire o creare l'oggetto di mapping di file per un determinato file.
Esempio
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
Distruttore.
~CAtlFileMappingBase() throw();
Osservazioni:
Libera tutte le risorse allocate dalla classe e chiama il metodo CAtlFileMappingBase::Unmap .
CAtlFileMappingBase::CopyFrom
Chiamare questo metodo per copiare da un oggetto di mapping di file.
HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();
Parametri
orig
Oggetto di mapping di file originale da copiare.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
CAtlFileMappingBase::GetData
Chiamare questo metodo per ottenere i dati da un oggetto di mapping di file.
void* GetData() const throw();
Valore restituito
Restituisce un puntatore ai dati.
CAtlFileMappingBase::GetHandle
Chiamare questo metodo per restituire un handle all'oggetto di mapping file.
HANDLE GetHandle() throw ();
Valore restituito
Restituisce un handle all'oggetto di mapping di file.
CAtlFileMappingBase::GetMappingSize
Chiamare questo metodo per ottenere le dimensioni del mapping da un oggetto di mapping di file.
SIZE_T GetMappingSize() throw();
Valore restituito
Restituisce le dimensioni del mapping.
Esempio
Vedere l'esempio per CAtlFileMappingBase::CAtlFileMappingBase.
CAtlFileMappingBase::MapFile
Chiamare questo metodo per aprire o creare un oggetto di mapping di file per il file specificato.
HRESULT MapFile(
HANDLE hFile,
SIZE_T nMappingSize = 0,
ULONGLONG nOffset = 0,
DWORD dwMappingProtection = PAGE_READONLY,
DWORD dwViewDesiredAccess = FILE_MAP_READ) throw();
Parametri
hFile
Handle per il file da cui creare un oggetto di mapping. hFile deve essere valido e non può essere impostato su INVALID_HANDLE_VALUE.
nMappingSize
Dimensioni del mapping. Se 0, la dimensione massima dell'oggetto di mapping dei file è uguale alla dimensione corrente del file identificato da hFile.
nOffset
Offset del file in cui iniziare il mapping. Il valore di offset deve essere un multiplo della granularità dell'allocazione di memoria del sistema.
dwMappingProtection
Protezione desiderata per la visualizzazione file quando viene eseguito il mapping del file. Vedere flProtect in CreateFileMapping in Windows SDK.
dwViewDesiredAccess
Specifica il tipo di accesso alla visualizzazione file e, pertanto, la protezione delle pagine mappate dal file. Vedere dwDesiredAccess in MapViewOfFileEx in Windows SDK.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Dopo la creazione di un oggetto di mapping di file, le dimensioni del file non devono superare le dimensioni dell'oggetto di mapping dei file; in caso contrario, non tutti i contenuti del file saranno disponibili per la condivisione. Per altre informazioni, vedere CreateFileMapping e MapViewOfFileEx in Windows SDK.
Esempio
Vedere l'esempio per CAtlFileMappingBase::CAtlFileMappingBase.
CAtlFileMappingBase::MapSharedMem
Chiamare questo metodo per creare un oggetto di mapping di file che consenta l'accesso completo a tutti i processi.
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();
Parametri
nMappingSize
Dimensioni del mapping. Se 0, la dimensione massima dell'oggetto di mapping file è uguale alla dimensione corrente dell'oggetto di mapping file identificato da szName.
szName
Nome dell'oggetto di mapping.
pbAlreadyExisted
Punta a un valore BOOL impostato su TRUE se l'oggetto di mapping esiste già.
lpsa
Puntatore a una SECURITY_ATTRIBUTES
struttura che determina se l'handle restituito può essere ereditato dai processi figlio. Vedere lpAttributes in CreateFileMapping in Windows SDK.
dwMappingProtection
Protezione desiderata per la visualizzazione file, quando viene eseguito il mapping del file. Vedere flProtect in CreateFileMapping
in Windows SDK.
dwViewDesiredAccess
Specifica il tipo di accesso alla visualizzazione file e, pertanto, la protezione delle pagine mappate dal file. Vedere dwDesiredAccess in MapViewOfFileEx in Windows SDK.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
MapShareMem
consente di condividere un oggetto di mapping di file esistente, creato da CreateFileMapping, tra processi.
CAtlFileMappingBase::OpenMapping
Chiamare questo metodo per aprire un oggetto di mapping di file denominato per il file specificato.
HRESULT OpenMapping(
LPCTSTR szName,
SIZE_T nMappingSize,
ULONGLONG nOffset = 0,
DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();
Parametri
szName
Nome dell'oggetto di mapping. Se è presente un handle aperto per un oggetto di mapping di file con questo nome e il descrittore di sicurezza nell'oggetto mapping non è in conflitto con il parametro dwViewDesiredAccess , l'operazione di apertura ha esito positivo.
nMappingSize
Dimensioni del mapping. Se 0, la dimensione massima dell'oggetto di mapping file è uguale alla dimensione corrente dell'oggetto di mapping file identificato da szName.
nOffset
Offset del file in cui iniziare il mapping. Il valore di offset deve essere un multiplo della granularità dell'allocazione di memoria del sistema.
dwViewDesiredAccess
Specifica il tipo di accesso alla visualizzazione file e, pertanto, la protezione delle pagine mappate dal file. Vedere dwDesiredAccess in MapViewOfFileEx in Windows SDK.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Nelle compilazioni di debug si verificherà un errore di asserzione se i parametri di input non sono validi.
CAtlFileMappingBase::operator =
Imposta l'oggetto di mapping file corrente su un altro oggetto di mapping di file.
CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);
Parametri
orig
Oggetto di mapping file corrente.
Valore restituito
Restituisce un riferimento all'oggetto corrente.
CAtlFileMappingBase::Unmap
Chiamare questo metodo per rimuovere il mapping di un oggetto di mapping di file.
HRESULT Unmap() throw();
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Per altri dettagli, vedere UnmapViewOfFile in Windows SDK.