Freigeben über


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

Weitere Informationen

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE