ClfsCreateMarshallingArea-Funktion (wdm.h)
Die ClfsCreateMarshallingArea Routine erstellt einen Marshallbereich für einen CLFS-Stream und gibt einen Zeiger auf einen undurchsichtigen Kontext zurück, der den neuen Marshallingbereich darstellt.
Syntax
CLFSUSER_API NTSTATUS ClfsCreateMarshallingArea(
[in] PLOG_FILE_OBJECT plfoLog,
[in] POOL_TYPE ePoolType,
[in, optional] PALLOCATE_FUNCTION pfnAllocBuffer,
[in, optional] PFREE_FUNCTION pfnFreeBuffer,
[in] ULONG cbMarshallingBuffer,
[in] ULONG cMaxWriteBuffers,
[in] ULONG cMaxReadBuffers,
[out] PVOID *ppvMarshalContext
);
Parameter
[in] plfoLog
Ein Zeiger auf eine LOG_FILE_OBJECT Struktur, die einen CLFS-Datenstrom darstellt. Der Aufrufer hat diesen Zeiger zuvor durch Aufrufen ClfsCreateLogFileabgerufen.
[in] ePoolType
Ein POOL_TYPE Wert, der den Speichertyp (z. B. ausgelagert, nicht ausgelagert) angibt, den der neue Marshallingbereich für die Protokoll-E/A-Blöcke verwendet.
[in, optional] pfnAllocBuffer
Entweder NULL- oder ein Zeiger auf eine vom Aufrufer bereitgestellte Funktion, die einen Protokoll-E/A-Block für den Marshallbereich zuweist. Die Zuordnungsfunktion weist den folgenden Prototyp auf:
PVOID
(*PALLOCATE_FUNCTION) (
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag
);
Der Rückgabewert der Zuordnungsfunktion ist ein Zeiger auf den neu zugewiesenen Protokoll-E/A-Block.
[in, optional] pfnFreeBuffer
Entweder NULL- oder ein Zeiger auf eine vom Aufrufer bereitgestellte Funktion, die einen Protokoll-E/A-Block freigibt, der zuvor von pfnAllocBufferzugewiesen wurde. Die Funktion weist den folgenden Prototyp auf:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
[in] cbMarshallingBuffer
Die Größe der einzelnen Protokoll-E/A-Blöcke in Bytes, die der neue Marshallbereich verwendet. Dies muss ein Vielfaches der Sektorgröße auf dem stabilen Speichermedium sein. Die Sektorgröße ist der lpBytesPerSector Wert, der von GetDiskFreeSpacezurückgegeben wird.
[in] cMaxWriteBuffers
Die maximale Anzahl von E/A-Blöcken, die gleichzeitig für Schreibvorgänge zugewiesen werden können. Dieser Parameter wirkt sich auf die Häufigkeit von Datenlöschungen aus. Wenn Sie die Häufigkeit von Datenlöschungen nicht steuern müssen, legen Sie diesen Parameter auf INFINITE fest.
[in] cMaxReadBuffers
Die maximale Anzahl von Protokoll-E/A-Blöcken, die gleichzeitig für Lesevorgänge zugewiesen werden können.
[out] ppvMarshalContext
Ein Zeiger auf eine Variable, die einen Zeiger auf einen undurchsichtigen Kontext empfängt, der den neuen Marshallbereich darstellt.
Rückgabewert
ClfsCreateMarshallingArea gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist; andernfalls wird eine der fehlercodes zurückgegeben, die in Ntstatus.h definiert sind.
Bemerkungen
Die parameter pfnAllocBuffer und pfnFreeBuffer müssen beide auf aufruferzuweisungsfunktionen verweisen, oder beide müssen NULL-sein. Wenn sie beide NULL-sind, stellt CLFS Standardfunktionen zum Zuweisen und Freigeben von Protokoll-E/A-Blöcken bereit.
Bevor Sie ClfsCreateMarshallingArea-aufrufen, müssen Sie mindestens zwei Container zum zugrunde liegenden Protokoll hinzufügen, indem Sie ClfsAddLogContainer oder ClfsAddLogContainerSetaufrufen.
Eine Erläuterung der CLFS-Konzepte und -Terminologie finden Sie unter Common Log File System.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h) |
Library | Clfs.lib |
DLL- | Clfs.sys |
IRQL- | IRQL-<= APC_LEVEL |