Condividi tramite


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.

Vedi anche

Classe CAtlFileMapping
Cenni preliminari sulla classe