Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt die daten bereit, die in einem Aufruf des PRJ_GET_FILE_DATA_CB Rückrufs angefordert werden.
Syntax
HRESULT PrjWriteFileData(
[in] PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext,
[in] const GUID *dataStreamId,
[in] void *buffer,
[in] UINT64 byteOffset,
[in] UINT32 length
);
Die Parameter
[in] namespaceVirtualizationContext
Undurchsichtiges Handle für die Virtualisierungsinstanz.
Wenn der Anbieter einen PRJ_GET_FILE_DATA_CB Rückruf verwaltet, muss dies der Wert aus dem VirtualizationInstanceHandle-Element des callbackData-Elements sein, das an den Anbieter im Rückruf übergeben wird.
[in] dataStreamId
Bezeichner für den Datenstrom, in den geschrieben werden soll.
Wenn der Anbieter einen PRJ_GET_FILE_DATA_CB Rückruf verwaltet, muss dies der Wert aus dem DataStreamId-Element des callbackData-Elements sein, das an den Anbieter im Rückruf übergeben wird.
[in] buffer
Zeigen Sie auf einen Puffer, der die zu schreibenden Daten enthält. Der Puffer muss mindestens so groß sein wie der Wert des Längenparameters in Byte. Der Anbieter sollte PrjAllocateAlignedBuffer verwenden, um sicherzustellen, dass der Puffer die Ausrichtungsanforderungen des Speichergeräts erfüllt.
[in] byteOffset
Byteoffset vom Anfang der Datei, an der die Daten geschrieben werden sollen.
[in] length
Die Anzahl der Bytes, die in die Datei geschrieben werden sollen.
Rückgabewert
HRESULT_FROM_WIN32(ERROR_OFFSET_ALIGNMENT_VIOLATION) gibt an, dass das Handle des Benutzers für nicht entbufferte E/A geöffnet wurde und byteOffset nicht an der Sektorgröße des Speichergeräts ausgerichtet ist.
Bemerkungen
Der Anbieter verwendet diese Routine, um die angeforderten Daten in einem Aufruf seines PRJ_GET_FILE_DATA_CB Rückrufs bereitzustellen.
Der PRJ_GET_FILE_DATA_CB Rückruf des Anbieters wird aufgerufen, wenn das System sicherstellen muss, dass eine Datei Daten enthält. Wenn der Anbieter PrjWriteFileData aufruft, um die angeforderten Daten zu liefern, verwendet das System die FILE_OBJECT des Benutzers, um diese Daten in die Datei zu schreiben. Das System kann jedoch nicht steuern, ob diese FILE_OBJECT für gepufferte oder ungepufferte E/A geöffnet wurde. Wenn die FILE_OBJECT für nicht entbufferte E/A geöffnet wurde, müssen Lese- und Schreibvorgänge in die Datei bestimmte Ausrichtungsanforderungen erfüllen. Der Anbieter kann diese Ausrichtungsanforderungen erfüllen, indem er zwei Dinge ausführt:
- Verwenden Sie PrjAllocateAlignedBuffer , um den Puffer zuzuweisen, der an puffer übergeben werden soll.
- Stellen Sie sicher, dass byteOffset und Länge ganzzahlige Vielfache der Ausrichtungsanforderung des Speichergeräts sind (länge muss diese Anforderung nicht erfüllen, wenn byteOffset + length gleich dem Ende der Datei ist). Der Anbieter kann PrjGetVirtualizationInstanceInfo verwenden, um die Ausrichtungsanforderung des Speichergeräts abzurufen.
Das System verlässt es bis zum Anbieter, um die richtige Ausrichtung zu berechnen, da der Anbieter bei der Verarbeitung eines PRJ_GET_FILE_DATA_CB Rückrufs die angeforderten Daten über mehrere PrjWriteFileData-Aufrufe zurückgibt, wobei jeder Teil der angeforderten Daten insgesamt zurückgibt.
Beachten Sie, dass der Anbieter die gesamte Datei in einem einzigen Aufruf von PrjWriteFileData schreiben wird, d. h. von byteOffset = 0 bis length = size of the file, the provider does not have to do any alignment calculations. Es muss jedoch weiterhin PrjAllocateAlignedBuffer verwenden, um sicherzustellen, dass der Puffer die Ausrichtungsanforderungen des Speichergeräts erfüllt. Weitere Informationen zu gepufferten und nicht gepufferten E/A-Vorgängen finden Sie im Thema " Dateipufferung ".
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows 10, Version 1809 [nur Desktop-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server [nur Desktop-Apps] |
| Zielplattform | Fenster |
| Header | projectedfslib.h |
| Library | ProjectedFSLib.lib |