ClfsCreateMarshallingArea-Funktion (wdm.h)
Die ClfsCreateMarshallingArea-Routine erstellt einen Marshallingbereich 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-Stream darstellt. Der Aufrufer hat diesen Zeiger zuvor durch Aufrufen von ClfsCreateLogFile abgerufen.
[in] ePoolType
Ein POOL_TYPE Wert, der den Speichertyp (z. B. ausgelagert, nicht ausgelagert) angibt, den der neue Marshallbereich für seine 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 Marshallingbereich zuordnet. Die Zuordnungsfunktion verfügt über den folgenden Prototyp:
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 zugeordneten 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 pfnAllocBuffer zugeordnet wurde. Die Funktion verfügt über den folgenden Prototyp:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
[in] cbMarshallingBuffer
Die Größe der einzelnen Protokoll-E/A-Blöcke in Bytes, die der neue Marshallingbereich verwendet. Dies muss ein Vielfaches der Sektorgröße auf dem stabilen Speichermedium sein. Die Sektorgröße ist der lpBytesPerSector-Wert , der von GetDiskFreeSpace zurückgegeben wird.
[in] cMaxWriteBuffers
Die maximale Anzahl von E/A-Blöcken, die gleichzeitig für Schreibvorgänge zugeordnet werden können. Dieser Parameter wirkt sich auf die Häufigkeit von Datenleerungen aus. Wenn Sie die Häufigkeit der Datenleerungen 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 zugeordnet werden können.
[out] ppvMarshalContext
Ein Zeiger auf eine Variable, die einen Zeiger auf einen undurchsichtigen Kontext empfängt, der den neuen Marshallingbereich darstellt.
Rückgabewert
ClfsCreateMarshallingArea gibt bei Erfolg STATUS_SUCCESS zurück. Andernfalls wird einer der in "Ntstatus.h" definierten Fehlercodes zurückgegeben.
Hinweise
Die Parameter pfnAllocBuffer und pfnFreeBuffer müssen beide auf vom Aufrufer zugewiesene Funktionen verweisen, oder beide müssen NULL sein. Wenn beide NULL sind, stellt CLFS Standardfunktionen zum Zuweisen und Freigeben von Protokoll-E/A-Blöcken bereit.
Vor dem Aufrufen von ClfsCreateMarshallingArea müssen Sie dem zugrunde liegenden Protokoll mindestens zwei Container hinzufügen, indem Sie ClfsAddLogContainer oder ClfsAddLogContainerSet aufrufen.
Eine Erläuterung der CLFS-Konzepte und -Terminologie finden Sie unter Common Log File System( Common Log File System).
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | wdm.h (wdm.h einschließen) |
Bibliothek | Clfs.lib |
DLL | Clfs.sys |
IRQL | IRQL <= APC_LEVEL |