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 nGrowBytes
Größe zugewiesen, wenn nGrowBytes
nicht 0.
Weitere Informationen finden Sie im Artikel "Dateien in MFC " und "Dateibehandlung " in der Laufzeitbibliotheksreferenz.
Vererbungshierarchie
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 CSharedFile
Angefü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.