ClfsAddLogContainerSet-Funktion (wdm.h)
Die ClfsAddLogContainerSet-Routine fügt einem CLFS-Protokoll atomar eine Gruppe von Containern hinzu.
Syntax
CLFSUSER_API NTSTATUS ClfsAddLogContainerSet(
[in] PLOG_FILE_OBJECT plfoLog,
[in] USHORT cContainers,
[in, optional] PULONGLONG pcbContainer,
[in] PUNICODE_STRING rguszContainerPath
);
Parameter
[in] plfoLog
Ein Zeiger auf eine LOG_FILE_OBJECT-Struktur , die das Protokoll darstellt, dem die Container hinzugefügt werden. Der Aufrufer hat diesen Zeiger zuvor durch Aufrufen von ClfsCreateLogFile abgerufen.
[in] cContainers
Die Anzahl der Container in der Gruppe. Dies ist die Anzahl der Elemente im rguszContainerPath-Array .
[in, optional] pcbContainer
Ein Zeiger auf eine Variable vom Typ "ULONGLONG". Die Rolle dieses Parameters hängt davon ab, ob das Protokoll derzeit über mindestens einen Container verfügt.
- Wenn das Protokoll derzeit keine Container enthält, stellt der Aufrufer eine positive ganze Zahl bereit, die die angeforderte Größe eines einzelnen Containers in Byte entspricht. CLFS erstellt Container mit der angeforderten Größe, die auf ein Vielfaches von 512 KB (für ein dediziertes Protokoll) oder 1 MB (für ein Multiplexprotokoll) aufgerundet sind.
- Wenn das Protokoll derzeit mindestens einen Container enthält und dieser Parameter der NULL-Zeiger ist, erstellt CLFS neue Container, die die gleiche Größe wie die vorhandenen Container haben. (Alle Container in einem Protokoll müssen dieselbe Größe haben.)
- Wenn das Protokoll derzeit über mindestens einen Container verfügt und dieser Parameter ein gültiger Zeiger ist, gibt der Aufrufer eine positive ganze Zahl an, die die angeforderte Größe eines einzelnen Containers in Byte entspricht. Die angeforderte Größe wird auf ein Vielfaches von 512 KB (für ein dediziertes Protokoll) oder 1 MB (für ein freigegebenes Protokoll) aufgerundet. Wenn die aufgerundete Größe mindestens so groß ist wie die vorhandene Containergröße, erstellt CLFS neue Container, die die gleiche Größe wie die vorhandenen Container haben. Bei erfolgreicher Rückgabe empfängt dieser Parameter die vorhandene Containergröße. Wenn die aufgerundete Größe kleiner als die vorhandene Containergröße ist, schlägt ClfsAddLogContainerSet fehl.
[in] rguszContainerPath
Ein Zeiger auf ein Array von UNICODE_STRING Strukturen. Jede Zeichenfolge liefert den Pfadnamen für einen der neuen Container. Die Anzahl der Elemente im Array wird von cContainers angegeben. Ein angegebener Pfad kann absolut oder relativ zum Speicherort der Basisprotokolldatei sein. Pfade, die relativ zur Basisprotokolldatei sind, müssen mit CLFS_CONTAINER_RELATIVE_PREFIX beginnen, das Zeichenfolgenliteral (L"%BLF%\").
Rückgabewert
ClfsAddLogContainer gibt bei Erfolg STATUS_SUCCESS zurück. Andernfalls wird einer der in "Ntstatus.h" definierten Fehlercodes zurückgegeben.
Hinweise
Ein Container ist eine zusammenhängende Ausdehnung des stabilen Speichers. Beispielsweise kann ein Container eine zusammenhängende Datei auf dem Datenträger sein. Ein Protokoll besteht aus einer Gruppe von Containern zusammen mit einer Basisprotokolldatei. Weitere Informationen zu Containern finden Sie unter CLFS Stable Storage.
Ein container, der durch einen Pfad angegeben wird, der relativ zur Basisprotokolldatei ist, muss sich im selben Verzeichnis wie die Basisprotokolldatei oder ein Unterverzeichnis der Basisprotokolldatei befinden. Die Verzeichnisse "." und ".." sind in einem relativen Pfad nicht zulässig.
Ein Protokoll kann einige Container mit absoluten Pfaden und andere Container mit relativen Pfaden enthalten.
Container werden in einem nicht komprimierten Modus erstellt und mit Nullen initialisiert.
Ein Protokoll muss über mindestens zwei Container verfügen, bevor E/A für das Protokoll ausgeführt werden kann.
Eine Erläuterung der CLFS-Konzepte und -Terminologie finden Sie unter Common Log File System( Common Log File System).
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Server 2003 R2, Windows Vista und höheren Versionen von Windows. |
Zielplattform | Desktop |
Kopfzeile | wdm.h (wdm.h einschließen) |
Bibliothek | Clfs.lib |
DLL | Clfs.sys |
IRQL | <= APC_LEVEL |