Freigeben über


CSharedFile-Klasse

Die von CMemFile abgeleitete Klasse, die freigegebene Speicherdateien unterstützt.

Syntax

class CSharedFile : public CMemFile

Member

Öffentliche Konstruktoren

Name Beschreibung
CSharedFile::CSharedFile Erstellt ein CSharedFile-Objekt.

Öffentliche Methoden

Name Beschreibung
CSharedFile::D etach Schließt die freigegebene Speicherdatei und gibt das Handle des Speicherblocks zurück.
CSharedFile::SetHandle Fügt die freigegebene Speicherdatei an einen Speicherblock an.

Hinweise

Speicherdateien verhalten sich wie Datenträgerdateien. Der Unterschied besteht darin, dass eine Speicherdatei nicht auf dem Datenträger, sondern im RAM gespeichert wird. Eine Speicherdatei ist nützlich für schnellen temporären Speicher oder zum Übertragen von unformatierten Bytes oder serialisierten Objekten zwischen unabhängigen Prozessen.

Freigegebene Speicherdateien unterscheiden sich von anderen Speicherdateien in diesem Speicher für sie werden der GlobalAlloc Windows-Funktion zugewiesen. Die CSharedFile Klasse speichert Daten in einem global zugewiesenen Speicherblock (erstellt mit GlobalAlloc), und dieser Speicherblock kann mithilfe von DDE, der Zwischenablage oder anderen uniform OLE/COM-Datenübertragungsvorgängen freigegeben werden, z. B. mithilfe von IDataObject.

GlobalAlloc gibt ein HGLOBAL-Handle anstelle eines Zeigers auf den Speicher zurück, z. B. den von Malloc zurückgegebenen Zeiger. Der HGLOBAL-Handle ist in bestimmten Anwendungen erforderlich. Zum Einfügen von Daten in die Zwischenablage benötigen Sie z. B. ein HGLOBAL-Handle.

CSharedFile verwendet keine im Arbeitsspeicher zugeordneten Dateien, und die Daten können nicht direkt zwischen Prozessen freigegeben werden.

CSharedFile Objekte können automatisch ihren eigenen Speicher zuordnen. Sie können auch einen eigenen Speicherblock an das CSharedFile Objekt anfügen, indem Sie CSharedFile::SetHandle aufrufen. In beiden Fällen wird der Speicher für die Erweiterung der Speicherdatei automatisch in Schritten der nGrowBytesGröße zugewiesen, wenn nGrowBytes nicht 0.

Weitere Informationen finden Sie im Artikel "Dateien in MFC " und "Dateibehandlung " in der Laufzeitbibliotheksreferenz.

Vererbungshierarchie

CObject

CFile

CMemFile

CSharedFile

Anforderungen

Kopfzeile: afxadv.h

CSharedFile::CSharedFile

Erstellt ein CSharedFile Objekt und weist dafür Speicher zu.

CSharedFile(
    UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
    UINT nGrowBytes = 4096);

Parameter

nAllocFlags
Flags, die angeben, wie Arbeitsspeicher zugewiesen werden soll. Eine Liste gültiger Flagwerte finden Sie unter GlobalAlloc .

nGrowBytes
Die Speicherzuordnung in Bytes erhöht.

CSharedFile::D etach

Rufen Sie diese Funktion auf, um die Speicherdatei zu schließen und sie vom Speicherblock zu trennen.

HGLOBAL Detach();

Rückgabewert

Das Handle des Speicherblocks, der den Inhalt der Speicherdatei enthält.

Hinweise

Sie können es erneut öffnen , indem Sie SetHandle aufrufen, indem Sie das von Detach zurückgegebene Handle verwenden.

CSharedFile::SetHandle

Rufen Sie diese Funktion auf, um einen Block des globalen Speichers an das CSharedFile Objekt anzufügen.

void SetHandle(
    HGLOBAL hGlobalMemory,
    BOOL bAllowGrow = TRUE);

Parameter

hGlobalMemory
Behandeln Sie den globalen Speicher, der an die CSharedFileAngefügt werden soll.

bAllowGrow
Gibt an, ob der Speicherblock vergrößert werden darf.

Hinweise

Wenn bAllowGrow nicht null ist, wird die Größe des Speicherblocks bei Bedarf erhöht, z. B. wenn Sie versuchen, mehr Bytes in die Datei zu schreiben als die Größe des Speicherblocks.

Siehe auch

CMemFile-Klasse
Hierarchiediagramm
CMemFile-Klasse